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

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

OpenDialog [D7, WinXP]


#Deus ©   (2002-12-07 16:38:00) 

1)Как сделать чтобы через OpenDialog можно было выбирать целые директории? А не только файлы?
Спасибо!


Song   (2002-12-07 22:19:00) [1]

>>Позволяет выбирать несколько файлов, хоть все сразу.
А при чём тут файлы? Автор директории просил..

Можно SelectDirectory() использовать.


Vcoder   (2002-12-07 22:03:00) [2]

А если
ofAllowMiltiSelect:=True;
Не пойдет?

Позволяет выбирать несколько файлов, хоть все сразу.


#Deus   (2002-12-07 17:25:00) [3]

Большое спасибо!


neodiX   (2002-12-07 17:00:00) [4]

а потом так:

procedure TfrMain.btnBrowseClick(Sender: TObject);
var sTitle, sFolder: string;
iFlag : integer;
begin
sTitle:="Choose a " +
rgBrowseFor.Items[rgBrowseFor.ItemIndex];
case rgBrowseFor.ItemIndex of
0: iFlag := BIF_RETURNONLYFSDIRS;
1: iFlag := BIF_BROWSEINCLUDEFILES;
2: iFlag := BIF_BROWSEFORCOMPUTER;
3: iFlag := BIF_BROWSEFORPRINTER;
end;
sFolder := BrowseDialog(sTitle, iFlag);
if sFolder <> "" then
edSelected.text := sFolder
else
edSelected.text := "Nothing selected";
end;




neodiX   (2002-12-07 16:56:00) [5]

делай так:


uses ShellAPI, ShlObj;
...
function BrowseDialog
(const Title: string; const Flag: integer): string;
var
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
Result:="";
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
with BrowseInfo do begin
hwndOwner := Application.Handle;
pszDisplayName := @DisplayName;
lpszTitle := PChar(Title);
ulFlags := Flag;
end;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then begin
SHGetPathFromIDList(lpItemID, TempPath);
Result := TempPath;
GlobalFreePtr(lpItemID);
end;
end;




PaRL   (2002-12-07 16:51:00) [6]

Никак. Зачем. Сделай своё окно и используй например DirectoryListBox, DriveComboBox.

Страница Win 3.1


Наверх

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