![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выбор директории
__Oleg © (2003-02-12 14:29:00)Как вызвать диалог выбора директории?
blackman (2003-02-12 15:46:00) [1]Вот получилось вроде неплохо:
uses ShellAPI, ShlObj;
procedure TForm1.SelDir(Sender: TObject);
var
TitleName : string;
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := Form1.Handle;
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := "Please specify a directory";
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then
begin
SHGetPathFromIDList(lpItemID, TempPath);
ShowMessage(TempPath);
GlobalFreePtr(lpItemID);
end;
end;
blackman (2003-02-12 15:39:00) [2]>Андрей Сенченко
Пардон.
Используйте SelectDirectory() из модуля FileCtrl
Также смотрите компоненты на вкладке Win3.1
или
uses ShlObj;
procedure TForm1.BrowseBtnClick(Sender: TObject);
var
TitleName : string;
lpItemID : PItemIDList;
BI : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
FillChar(BI, SizeOf(TBrowseInfo), #0);
BI.hwndOwner := Handle;
BI.pszDisplayName := @DisplayName;
TitleName := "Select folder";
BI.lpszTitle := PChar(TitleName);
BI.ulFlags := $0040;// or BIF_EDITBOX;
lpItemID := SHBrowseForFolder(BI);
if lpItemId <> nil then begin
SHGetPathFromIDList(lpItemID, TempPath);
EditArcDir.Text := Format("%s\", [TempPath]);
GlobalFreePtr(lpItemID);
end;
end;
__Oleg (2003-02-12 15:12:00) [3]Ага, а может еще насчет BrowseDirectory расскажете, где ее взять? :)
Андрей Сенченко (2003-02-12 15:10:00) [4]Ну .. в принципе по существу Тебе уже все сазали
var
RootDir : string;
begin
if SelectDirectory("Давай выберем папку !","C:\",RootDir) = true then
// .... и пиши чего хочешь
Флудим ...
__Oleg (2003-02-12 15:09:00) [5]> Олег
Sorry, зарапортовался :) Точно, там переменная...
Cranium (2003-02-12 15:07:00) [6]Вот я пользую это так....
procedure TFormNTrans.SpeedButton1Click(Sender: TObject);
var
Dir: String;
begin
If SelectDirectory ("Укажите путь к каталогу базы","",Dir) then
begin
Dir:=InputBox("Можете уточнить путь", "База расположена", Dir);
Edit1.Text:=Dir;
end
else
begin
MessageDlg("Вы не указали каталог! "+#13+"Путь к базе не выбран!", mtError,[mbYes],0);
end;
end;
Олег (2003-02-12 15:06:00) [7]
> __Oleg (12.02.03 14:56)
> Вызываю из примера:
В примере немного по-другому
uses FileCtrl;
const
SELDIRHELP = 1000;
procedure TForm1.Button1Click(Sender: TObject);
var
Dir: string;
begin
Dir := "C:\MYDIR";
if SelectDirectory( Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP) then
Label1.Caption := Dir;
end;
__Oleg (2003-02-12 15:04:00) [8]Народ, может все же по существу?
Андрей Сенченко (2003-02-12 15:02:00) [9]blackman © (12.02.03 14:58)
Кривой перевод
blackman (2003-02-12 14:58:00) [10]>Anatoly Podgoretsky
How to cause dialogue of a choice of a directory?
__Oleg (2003-02-12 14:56:00) [11]Вызываю из примера:
...
const
SELDIRHELP = 1000;
begin
SelectDirectory("d:\temp", [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP)
...
Выдает ошибку:
There is no overloaded version of SelectDirectory that can be called with these arguments.
AlexKr (2003-02-12 14:45:00) [12]Попробуй SelectDirectory
kkostik (2003-02-12 14:45:00) [13]SHBrowseForFolder
Anatoly Podgoretsky (2003-02-12 14:33:00) [14]Перевести на английский и воспользоваться переводом