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;
var
Info: TBrowseInfo;
Dir: array[0..260] of char;
ItemId: PItemIDList;
begin
with Info do begin
hwndOwner := self.Handle;
pidlRoot := nil;
pszDisplayName := nil;
lpszTitle := '请选择XXX的文件夹';
ulFlags := 0;
lpfn := nil;
lParam := 0;
iImage := 0;
end;
ItemId := SHBrowseForFolder(info);
if ItemId <> nil then
begin
SHGetPathFromIDList(ItemId, @Dir);
showmessage(dir);
end
end;
记着先use shlobj,activex;
with Topendialog.Create (nil) do try
Filter:='文本文件|*.exe|所有文件|*.*';
if Execute then
showmessage(filename);
finally
free;
end;
不要总想用api,那还要vcl封装那么多东西干什么