Страница 1 из 1

Как сделать диалог выбора папки

Добавлено: 14 мар 2007, 13:27
namomelkor
нужен диалог выбора папки

Re: Как сделать диалог выбора папки

Добавлено: 14 мар 2007, 14:13
Хыиуду
ShellTreeView в закладке Samples

Re: Как сделать диалог выбора папки

Добавлено: 14 мар 2007, 14:22
namomelkor
а не визуальный есть? как opendialog.

Re: Как сделать диалог выбора папки

Добавлено: 14 мар 2007, 15:30
Лелик_1044
namomelkor писал(а):а не визуальный есть? как opendialog.
А из jvcl не походит?

Re: Как сделать диалог выбора папки

Добавлено: 14 мар 2007, 15:37
Blood_Magic
есть то что ты хочешь:uses ShlObj;функцияSHBrowseForFolder

Re: Как сделать диалог выбора папки

Добавлено: 14 мар 2007, 16:51
namomelkor
Blood_Magic писал(а):есть то что ты хочешь:uses ShlObj;функцияSHBrowseForFolder
что-то не пойму как ее юзать

Re: Как сделать диалог выбора папки

Добавлено: 15 мар 2007, 08:46
Blood_Magic
так справку читать надо если не понятно как юзать

вот так можешь функцию написать

Код: Выделить всё

uses ShlObj;
//Handle - Ссылка на родительское окно
function BrowseDialog(const Handle:Cardinal):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:=Handle;
      pszDisplayName:=@DisplayName;
      lpszTitle:='Выбор папки БД';
      ulFlags:=BIF_RETURNONLYFSDIRS;
    end;
  lpItemID:=SHBrowseForFolder(BrowseInfo);
  If lpItemId<>nil then
    begin
      SHGetPathFromIDList(lpItemID,TempPath);
      Result:=TempPath;
      GlobalFreePtr(lpItemID);
    end;
end;
а так юзай

Код: Выделить всё

........
  NewBaseDir:=BrowseDialog(Handle);
  If NewBaseDir<>'' then
........

Re: Как сделать диалог выбора папки

Добавлено: 15 мар 2007, 10:07
SergeyS
uses FileCtrl;

там есть функция

function SelectDirectory(const Caption: string; const Root: WideString;
var Directory: string; Options: TSelectDirExtOpts; Parent: TWinControl): Boolean;

которая как раз и является делфовой обёрткой функции SHBrowseForFolder

Re: Как сделать диалог выбора папки

Добавлено: 15 мар 2007, 12:13
namomelkor
SergeyS писал(а):uses FileCtrl;

там есть функция

function SelectDirectory(const Caption: string; const Root: WideString;
var Directory: string; Options: TSelectDirExtOpts; Parent: TWinControl): Boolean;

которая как раз и является делфовой обёрткой функции SHBrowseForFolder
Вид у него очень совковый )))
на VBA есть такая штука

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Choose a folder:", &H4000, "")
Set objFolderItem = objFolder.Self
ipath$ = objFolderItem.Path

А на делфях есть такое? Или подскажите как под под делфи переделать.

Re: Как сделать диалог выбора папки

Добавлено: 15 мар 2007, 13:30
namomelkor
Blood_Magic извиняюсь это все из-за лени. Предложеный код это то что нужно. спасибо.