|
|
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
В ПБ есть стандартное окно выбора папок GetFolder( ... ). Как в него добавить кнопочку "Создать папку" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 14:15 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
См. winapi Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 14:42 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
2 ИвановНН Спасибо, получилось ! Но теперь другая проблема: Как заставить SHBrowseForFolder инициализироваться дерево папок на указанной папке. Желательно с примерчиком ... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 21:45 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
Смени текущий фолдер приложения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 22:33 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
2 White Owl Не слушается. Инициализируется всегда на "Мой компутер" Вот такой код: browseinfo lst_bi long ll_pidl int li_thispos string ls_path, ls_xs long ll_rc ls_path=strjustify(trim(ls_path), 512, 1, " ") //space(512) // maximum path lenght lst_bi.howner=this.hwnd // handle of the window lst_bi.pidlRoot = 0 //GetCurrentDirectory ( ) lst_bi.pszdisplayname = space(260) lst_bi.lpszTitle = ctitle lst_bi.ulFlags = BIF_RETURNONLYFSDIRS + BIF_NEWDIALOGSTYLE ll_pidl = SHBrowseForFolderA(lst_bi) IF ll_pidl > 0 THEN // ll_rc = SHGetPathFromIDListA(ll_pidl, ls_path) // IF NOT ll_rc > 0 THEN ls_path = '' IF (NOT SHGetPathFromIDListA(ll_pidl, ls_path)) THEN ls_path = '' CoTaskMemFree( lst_bi.pidlRoot ) ELSE ls_path = '' END IF return ls_path Есть подозрение, что дело в lst_bi.pidlRoot, но я не знаю как с ним бороться. Что тут не так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2006, 10:23 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
PaulJB wrote: > Как заставить SHBrowseForFolder инициализироваться дерево папок на > указанной папке. Оставаясь в рамках эхотага - никак, там нужно использовать Callback. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2006, 11:20 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
в PB 9 есть GetFolder ( title, directory ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2006, 11:55 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
сам вижу что сморозил... можно пользовать GetFileSaveName c фильтром который не будет показывать файлы. там уж можно создавать директории... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2006, 12:06 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
2 Dmitry. Не ... нада именно окно выбора папок. Тут добрые люди подсказали, что для получения идентификатора стартовой папки можно воспользоваться SHGetIDListFromObject Но у меня не получается ее обьявить: Вот так описано в МСДН: MSDN Syntax HRESULT SHGetIDListFromObject( IUnknown *punk, PIDLIST_ABSOLUTE *ppidl ); Parameters punk [in] A pointer to the IUnknown of the object from which to get the PIDL. ppidl [out] A pointer to the PIDL of the given object. Return Value Returns S_OK if successful, or an error value otherwise. Как правильно ее обьявить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2006, 14:00 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
PaulJB, а обязательно все писать на PB? Может, стоит написать некую интерфейсную dll-ку, например на С++ или на ObjectPascal (в среде Delphi) с простыми параметрами и простым вызовом? А уже в этой dll-ке сделать вызов и SHBrowseForFolder и SHGetIDListFromObject? Сергей ------------------ Умом Россию не понять... С умом она несовместима. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2006, 15:04 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
Function long SHBrowseForFolder (ref t_browseInfo sBrowseInfo) Library "Shell32" Function long SHGetPathFromIDList (long pidList, ref string lpBuffer) Library "Shell32" //-------------------------------------------- t_browseinfo lt_BrowseInfo // BROWSE_INFO Win32 API's structure long lpIDList string s lt_BrowseInfo.hWndOwner = Handle(This) // Specifying the options for the dialog box lt_tBrowseInfo.ulFlags = BIF_RETURNONLYFSDIRS + ... // Getting selected directory path lpIDList = SHBrowseForFolder(lt_BrowseInfo) // Checking whether the user selects directory from the standard Windows dialog If lpIDList<>0 Then s = Space(MAX_PATH) SHGetPathFromIDList(lpIDList, s) end if ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2006, 15:51 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
Робяты - всем спасибо за советы - но не работает п@#$%^& :) Прилагаю обьектик (с чем работаю) - посмотрите, может чего присоветуете ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2006, 16:51 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
---------- Compiler: Errors test.pbl(n_cst_user32).n_cst_user32.waitforinputidle.7: Error C0051: Unknown function name: strjustify ---------- Finished Errors ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2006, 19:10 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
ls_path=strjustify(trim(ls_path), 512, 1, " ") //space(512) // maximum path lenght ... ааа ... сорри ... фанковские штучки ... переводим ... ls_path = trim(ls_path) ls_path = ls_path + space(512 - lenght(ls_path)) //space(512) // maximum path lenght карочи ... идея в том, что-бы строку дополнить пробелами справа до длины 512 или обрезать ... . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2006, 21:20 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
Все верно там.... Действительно нельзя без колбеков проинициализировать этот диалог каким-либо каталогом. Увы, но прийдется браться за PBNI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2006, 21:26 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
Всё это очень интересно, но 1) SHGetIDListFromObject НЕ существует. 2) Если вы хотите выбрать (preselect) определённую папку, а НЕ сделать её root для диалога, тогда нужен callback 3) Если вы можете удовлетвориться тем, что нужная вам папка будет root of the namespace, тогда: FAQ: How to convert a file system path to a pidl Aside from what SHGetSpecialFolderLocation returns in the way of pre-defined special shell folders (including virtual folders), there are a two ways that I'm aware of to covert any file system path to a pidl, one the hard and proper way, the other the easy and undocumented way. First the hard and proper way... Encapsulate and the shell's IShellFolder interface and call its ParseDisplayName member function. This entails defining the IShellFolder member functions in ODL or IDL (Object/Interface Description Language, see the SDK for more info) and compiling a type library. But you're in luck, the EnumDeskVB example on my site contains a file named ISHF_Ex.tlb in which I've wrapped the IShellFolder interface into a type library. See the GetPIDLFromPath function in the EnumDeskVB project's IShellFolder.bas file to see how ParseDisplayName is called. For the easy and undocumented way, Shell32.dll contains a rather neat little undocumented function that essentially duplicates what GetPIDLFromPath does (calls ParseDisplayName with the path passed to it converted to Unicode and returns the path's pidl) called SHSimpleIDListFromPath. Here's the declare: Declare Function SHSimpleIDListFromPath Lib "shell32" Alias "#162" _ (ByVal szPath As String) As Long Some things to consider about this function: First, as far as I know, the function is exported at the specified ordinal in all current versions of Shell32.dll (including Win95 and WinNT's v4.00.*, IE3's v4.70, IE4 and WinNT 5.0's v4.71, and Win98's v4.72), but there is nothing that says it will be at this ordinal or will be available at all in any future versions of the library. Secondly, szPath must be specified as an ANSII string in when this function is called from Win95, and as a Unicode string when called on WinNT. Finally the function's name is misleading. The function returns an absolute pidl relative to the desktop folder (as opposed to a "simple" pidl relative to its parent IShellFolder). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2006, 20:07 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
Филипп wrote: > 1) SHGetIDListFromObject НЕ существует. А я уж думал, что сошёл с ума, т.к. не смог найти эту функцию не только на сайте MS, но и где бы то ни было ещё . Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2006, 09:54 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
Филипп, большое спасибо - ща буду пробовать. > 1) SHGetIDListFromObject НЕ существует. А что тогда это ?: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shgetidlistfromobject.asp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2006, 12:12 |
|
||
|
Окно выбора папок. Как ... ?
|
|||
|---|---|---|---|
|
#18+
PaulJB wrote: >> 1) SHGetIDListFromObject НЕ существует. > А что тогда это ?: > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shgetidlistfromobject.asp А это кто-то не умеет читать ;)... там же написано: Minimum operating systems Windows Vista Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2006, 12:16 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=33748522&tid=1337754]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 267ms |
| total: | 457ms |

| 0 / 0 |
