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

Вниз

Вопрос про выбор папки   Найти похожие ветки 

 
Acronis ©   (2008-07-06 23:27) [0]

Привет!
Возможно вопрос вам покажется глупым:)
Мне перед запуском моего приложения нужно выбрать директорию, для ее выбора я использую следующий код:
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-06 23:34) [1]

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

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;


 
Acronis ©   (2008-07-06 23:44) [2]

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


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

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

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


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


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

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


 
Тын-Дын ©   (2008-07-07 01:14) [5]


> Юрий Зотов ©   (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:29) [6]


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


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


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


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

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

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


 
Тын-Дын ©   (2008-07-07 01:44) [8]


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


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

PS.

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


 
Тын-Дын ©   (2008-07-07 01:45) [9]


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


Сколько?


 
Юрий Зотов ©   (2008-07-07 01:52) [10]

> Тын-Дын ©   (07.07.08 01:14) [5]

И что же ты хотел сказать зтим свои "неужели", о, загадочный?


 
Германн ©   (2008-07-07 02:05) [11]


> Тын-Дын ©   (07.07.08 01:44) [8]
>
>

Скомпилирую без проблем, поскольку никогда не использую CodeCompletion, гореть бы ему в аду!


 
Тын-Дын ©   (2008-07-07 02:07) [12]


> Юрий Зотов ©   (07.07.08 01:52) [10]


Это немного придирки, конечно, но:

Юрий, я понимаю, конечно, что можно написать пример не глядя в справку.
Но будь на твоём месте новичок, некоторые уже топтали бы его ногами.

1. Одной строкой эту функцию даже при большом желании не удастся использовать.
2. Результат этой функции несколько другого типа.

PS.
Я знаю, что земля не круглая.
Но ведь и не настолько плоская?


 
Германн ©   (2008-07-07 02:07) [13]


> Тын-Дын ©   (07.07.08 01:45) [9]
>
>
> > Уж сколько я тут на форуме советовал эту функцию
>
>
> Сколько?
>

Много. Ты столько на форуме ещё не прожил.


 
Тын-Дын ©   (2008-07-07 02:08) [14]


> Германн ©   (07.07.08 02:05) [11]
>
>
> > Тын-Дын ©   (07.07.08 01:44) [8]
> >
> >
>
> Скомпилирую без проблем, поскольку никогда не использую
> CodeCompletion, гореть бы ему в аду!


Ну-ну. В том виде, который указан?
Только про многоточия не надо?


 
Тын-Дын ©   (2008-07-07 02:09) [15]


> Германн ©   (07.07.08 02:07) [13]
>
>
> > Тын-Дын ©   (07.07.08 01:45) [9]
> >
> >
> > > Уж сколько я тут на форуме советовал эту функцию
> >
> >
> > Сколько?
> >
>
> Много. Ты столько на форуме ещё не прожил.


Даже я только 2-3 раза эту функцию давал. Вряд ли тебе удалось больше раз её дать.


 
Германн ©   (2008-07-07 02:12) [16]


> Тын-Дын ©   (07.07.08 02:07) [12]
>
>
> > Юрий Зотов ©   (07.07.08 01:52) [10]
>
>
> Это немного придирки, конечно, но:
>
>

Совет ЮЗ полезен для тех, кто не имеет противопоказаний к чтению стандартной справки. Не более, но и не менее.

Твоя фраза "Одной строкой эту функцию даже при большом желании не удастся использовать." - чистая придирка.


 
Германн ©   (2008-07-07 02:14) [17]


> Тын-Дын ©   (07.07.08 02:09) [15]

Представь себе удалось.


 
Тын-Дын ©   (2008-07-07 02:15) [18]


> Германн ©   (07.07.08 02:14) [17]
>
>
> > Тын-Дын ©   (07.07.08 02:09) [15]
>
> Представь себе удалось.


Очень сомневаюсь.
Хочешь помериться - приходи в чат.


 
Тын-Дын ©   (2008-07-07 02:16) [19]

Кстати, в форуме принято отвечать за свои слова, за точность формулировок и высказываний.


 
Юрий Зотов ©   (2008-07-07 02:17) [20]

> Тын-Дын ©   (07.07.08 02:07) [12]

> 1. Одной строкой эту функцию даже при большом желании не
> удастся использовать.


if SelectDirectory(..., MyVar) then Edit1.Text := MyVar;

> 2. Результат этой функции несколько другого типа.

Поправка, безусловно, важнейшая. Ты  пристыдил меня, о, внимательнейший из дотошнейших.

LOL.


 
Тын-Дын ©   (2008-07-07 02:19) [21]


> Юрий Зотов ©   (07.07.08 02:17) [20]
>
> > Тын-Дын ©   (07.07.08 02:07) [12]
>
> > 1. Одной строкой эту функцию даже при большом желании
> не
> > удастся использовать.
>
> if SelectDirectory(..., MyVar) then Edit1.Text := MyVar;
>
>
> > 2. Результат этой функции несколько другого типа.
>
> Поправка, безусловно, важнейшая. Ты  пристыдил меня, о,
> внимательнейший из дотошнейших.


А я не ставил себе целью пристыдить.
Как и пофлудить.


 
Тын-Дын ©   (2008-07-07 02:19) [22]


> Юрий Зотов ©   (07.07.08 02:17) [20]
>
> > Тын-Дын ©   (07.07.08 02:07) [12]
>
> > 1. Одной строкой эту функцию даже при большом желании
> не
> > удастся использовать.
>
> if SelectDirectory(..., MyVar) then Edit1.Text := MyVar;
>


А где MyVar определена?
LOL


 
Тын-Дын ©   (2008-07-07 02:20) [23]


> Юрий Зотов ©   (07.07.08 02:17) [20]


Ты не умничай. Ты код давай!


 
Германн ©   (2008-07-07 02:22) [24]


>
> А я не ставил себе целью пристыдить.
> Как и пофлудить.
>

Ну да, Черномырдин ты наш. Хотел как лучше, а получилось как всегда.
:(


 
Тын-Дын ©   (2008-07-07 02:25) [25]


> Германн ©   (07.07.08 02:22) [24]
>
>
> >
> > А я не ставил себе целью пристыдить.
> > Как и пофлудить.
> >
>
> Ну да, Черномырдин ты наш. Хотел как лучше, а получилось
> как всегда.
> :(


Ха. А ты разве не за этим сюда приходишь?


 
Юрий Зотов ©   (2008-07-07 02:31) [26]

> Тын-Дын ©   (07.07.08 02:20) [23]

> Ты не умничай. Ты код давай!

Без флуда, без шуток и без подколок. Вполне серьезно.

Часто псевдокод именно для новичков бывает и понятнее, и полезнее, чем реальный рабочий код.

Понятнее - потому, что суть не загромождена техническими деталями.

Полезнее - потому, что реальный код придется писать самому. А для этого и в справку заглянуть придется, и подумать тоже.


 
Тын-Дын ©   (2008-07-07 02:32) [27]


> Юрий Зотов ©   (07.07.08 02:31) [26]
>
> > Тын-Дын ©   (07.07.08 02:20) [23]
>
> > Ты не умничай. Ты код давай!
>
> Без флуда, без шуток и без подколок. Вполне серьезно.
>
> Часто псевдокод именно для новичков бывает и понятнее, и
> полезнее, чем реальный рабочий код.
>
> Понятнее - потому, что суть не загромождена техническими
> деталями.
>
> Полезнее - потому, что реальный код придется писать самому.
>  А для этого и в справку заглянуть придется, и подумать
> тоже.


Юрий, полностью согласен;)


 
Германн ©   (2008-07-07 02:36) [28]


>
> > Германн ©   (07.07.08 02:22) [24]
> >
> >
> > >
> > > А я не ставил себе целью пристыдить.
> > > Как и пофлудить.
> > >
> >
> > Ну да, Черномырдин ты наш. Хотел как лучше, а получилось
> > как всегда.
> > :(
>
>
> Ха. А ты разве не за этим сюда приходишь?
>

Да. Бывает порой, что прихожу "за этим".


 
Игорь Шевченко ©   (2008-07-07 10:40) [29]

Троллить ты приходишь



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

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

Наверх




Память: 0.52 MB
Время: 0.007 c
15-1213437901
@!!ex
2008-06-14 14:05
2008.08.10
Дух времини(Zeitgeist)


6-1191259975
Дмитрий Белькевич
2007-10-01 21:32
2008.08.10
Получение данных текущего прокси эксплорера


2-1215507425
maxmic
2008-07-08 12:57
2008.08.10
TListView фокус


1-1196348183
Black Krok
2007-11-29 17:56
2008.08.10
Когда система "пукает"?


4-1194466380
Still Swamp
2007-11-07 23:13
2008.08.10
Не могу получить сообщение:





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский