Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Вниз

SelectDirectory   Найти похожие ветки 

 
kalliopiy   (2002-09-11 14:49) [0]

Здравствуйте!

Все знают, что существует такая хорошая функция SelectDirectory, предназначенная для вывода на экран диалога выбора директории. Все у нее хорошо, но не знает ли кто-либо как заставить этот диалог показать заранее выбранной какую-либо директорию. Я посмотрел реализацию SelectDirectory - там все вроде бы понятно, посмотрел в хелпе по WinAPI как это диалог вызывается, даже нашел упоминание о том как сделать необходимую мне вещь, но вот именно сделать это все я не могу. Слаб я в WinAPI. Может кто-то знает.


 
Демонов Е.В.   (2002-09-11 14:52) [1]

Напиши синтаксис ф-ии из справки Delphi
Под Рукой Delphi нет - а так сразу не вспомнить


 
Рыжик   (2002-09-11 14:57) [2]

Там два синтаксиса
function SelectDirectory(const Caption: string; const Root: WideString; out
Directory: string): Boolean; overload;
function SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload;
Используй первый. Root - начальная директория, которая показывается при открытии диалога


 
Lord Warlock   (2002-09-11 14:59) [3]

Два окна - одно в новом стиле, другое в старом
используютсЯ так:

var S: String;
begin
SelectDirectory(S,"D:\Temp\",S);
SelectDirectory(S,[],0);
end;


 
kalliopiy   (2002-09-11 15:29) [4]


> Lord Warlock ©, Рыжик

Простите, но я по-английски неплохо понимаю и с тем, что данная функция overloaded я тоже разобрался. Старый интерфейс выбора директории выглядит несуразно в новых ОС (тот интерфейс для 3.11). Так что, извините. Может подумаете еще?

> Демонов Е.В. ©

Интересная фамилия! Если поможет, то пожалуйста.

Функция WinAPI для вызова этого самого диалога ------------->
Displays a dialog box that enables the user to select a shell folder.

WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(
LPBROWSEINFO lpbi
);

Parameters:
lpbi - Pointer to a BROWSEINFO structure that contains information used to display the dialog box.

А теперь структурка BROWSEINFO ---------------->
Contains parameters for the the SHBrowseForFolder function and receives information about the folder selected by the user.

typedef struct _browseinfo {
HWND hwndOwner; // see below
LPCITEMIDLIST pidlRoot; // see below
LPSTR pszDisplayName; // see below
LPCSTR lpszTitle; // see below
UINT ulFlags; // see below
BFFCALLBACK lpfn; // see below
LPARAM lParam; // see below
int iImage; // see below
} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;


Среди прочего в своем составе имеет поле
lpfn - Address an application-defined function that the dialog box calls when events occur. For more information, see the description of the BrowseCallbackProc function. This member can be NULL.

Смотрим в BrowseCallbackProc (ну, для more information :)

Specifies an application-defined callback function used with the SHBrowseForFolder function. The browse dialog box calls this function to notify it about events. The BFFCALLBACK type defines a pointer to this callback function.

int BrowseCallbackProc(

HWND hwnd,
UINT uMsg,
LPARAM lParam,
LPARAM lpData
);


Parameters:
hwnd - Handle to the browse dialog box. The callback function can send the following messages to this window:

BFFM_ENABLEOK Enables the OK button if the wParam parameter is nonzero or disables it if wParam is zero.

BFFM_SETSELECTION Selects the specified folder. The lParam parameter is the PIDL of the folder to select if wParam is FALSE, or it is the path of the folder otherwise.

ВОТ ГДЕ СОБАКА ПОРЫЛАСЬ!!! В СМЫСЛЕ ЗДЕСЬ НАДО КОПАТЬ!

BFFM_SETSTATUSTEXT Sets the status text to the null-terminated string specified by the lParam parameter.

Остальные параметры интереса, вроде бы, не представляют.

Я не понимаю как последняя функция может "send the following messages" в окно диалога... И, вообще, как такую функцию определить и т.д.

Не запутал ли я всех еще более?..


 
Ученик   (2002-09-11 15:35) [5]

http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988622138&n=15


 
Lord Warlock   (2002-09-11 15:37) [6]

Не нужна тебе CallBack-функция, если конечно не хочешь написать компонент-оболочку Выбора директорий (это уже неоднократно сделано). Она посылает уведомления окну диалога, вроде "Изменился путь выбора", "нажали отмену", "до брауза", "после брауза", "проверка пути на правильность")



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
1-73694
Igel
2002-09-09 09:54
2002.09.23
Как определить hWnd моего приложения, если


4-73925
jekccs
2002-08-04 11:28
2002.09.23
Set proxy in IE


1-73661
XHelp
2002-09-13 00:04
2002.09.23
Схожесть Double ов


1-73639
First_May
2002-09-12 09:14
2002.09.23
Вид форм...


14-73848
Карлсон
2002-08-27 23:56
2002.09.23
Terrovision





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский