Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выбор директории


__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]

Перевести на английский и воспользоваться переводом


Наверх

Титульная страница Поиск, карта сайта Написать письмо