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

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

Вопрос про выбор папки


Страницы:   1 2

Acronis ©   (2008-07-06 23:27:00) 

Привет!
Возможно вопрос вам покажется глупым:)
Мне перед запуском моего приложения нужно выбрать директорию, для ее выбора я использую следующий код:
procedure TForm1.Button1Click(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);
   GlobalFreePtr(lpItemID);
 end;
end;

Рядом с кнопкой вызова этого диалога стоит TEdit, как сделать чтобы после выбора папки в элите отовражался путь к папке которую я выбрал?


Тын-Дын   (2008-07-07 01:45:00) [21]


> Уж сколько я тут на форуме советовал эту функцию


Сколько?


Тын-Дын   (2008-07-07 01:44:00) [22]


> А теперь ты мне и ЮЗ пытаешься объяснить прописные истины.
>  Которые известны нам уже очень давно.


Да неужели? -)))

PS.

В качестве упражнения скомпилируй код из [3]...


Германн   (2008-07-07 01:42:00) [23]


> Тын-Дын ©   (07.07.08 01:29) [6]
>
>

Угу. Ты хоть и тындын,  но в справку залезть не ленишься. Но вот многие прочие лезть в справку, тем более читать её, не хотят ни за что.
Уж сколько я тут на форуме советовал эту функцию тем, кто спрашивал про диалог выбора папки/каталога/директории! И сразу получал упрёки в некрасивости и устарелости. Делал намёки про то, что функций две - ноль внимания.

А теперь ты мне и ЮЗ пытаешься объяснить прописные истины. Которые известны нам уже очень давно.


Тын-Дын   (2008-07-07 01:29:00) [24]


> Германн ©   (07.07.08 01:03) [4]
>
>
> > И все. Одна простейшая строчка вместо всего этого страшного
> > монстра.
> >
>
> В коде действительно одна. А на форуме сотни строк про "некрасивость"
> и "устаревший вид" окошка выданного этой функцией.
> :)


Смотря какую функцию вызывать.
Второй вид - устаревший немного, первый ничем не отличается по внешнему виду от того, который выдаётся в топике, так как использует тот же SHBrowseForFolder.


Тын-Дын   (2008-07-07 01:14:00) [25]


> Юрий Зотов ©   (07.07.08 00:09) [3]
>
> Edit1.Text := SelectDirectory(...);
>
> И все. Одна простейшая строчка вместо всего этого страшного
> монстра.


Неужели?

function SelectDirectory(const Caption: string; const Root: WideString; out Directory: string): Boolean; overload;
function SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload;


Германн   (2008-07-07 01:03:00) [26]


> И все. Одна простейшая строчка вместо всего этого страшного
> монстра.
>

В коде действительно одна. А на форуме сотни строк про "некрасивость" и "устаревший вид" окошка выданного этой функцией.
:)


Юрий Зотов   (2008-07-07 00:09:00) [27]

Edit1.Text := SelectDirectory(...);

И все. Одна простейшая строчка вместо всего этого страшного монстра.


Acronis   (2008-07-06 23:44:00) [28]

Действительно, все так просто было, спасибо за помощь


Тын-Дын   (2008-07-06 23:34:00) [29]

Вах... А что, попробовать нельзя было?

procedure TForm1.Button1Click(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);
  Edit1.Text := TempPath;
  GlobalFreePtr(lpItemID);
end;
end;


Страницы:   1 2

Наверх

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