Delphi中filedialog的初始目录
我需要知道如何使用此链接中的示例设置初始目录 这是我正在使用的代码,除了能够设置初始文件夹外,它工作正常Delphi中filedialog的初始目录,delphi,filedialog,Delphi,Filedialog,我需要知道如何使用此链接中的示例设置初始目录 这是我正在使用的代码,除了能够设置初始文件夹外,它工作正常 function WinVistaSelectFolder: String; var FileDialog: IFileDialog; hr: HRESULT; IResult: IShellItem; initfldr:ishellitem; FileName: PWideChar; Settings: Cardinal; Title: String; be
function WinVistaSelectFolder: String;
var
FileDialog: IFileDialog;
hr: HRESULT;
IResult: IShellItem;
initfldr:ishellitem;
FileName: PWideChar;
Settings: Cardinal;
Title: String;
begin
hr := CoCreateInstance (CLSID_FileOpenDialog,nil,CLSCTX_INPROC_SERVER,IFileDialog, FileDialog);
if hr = S_OK then
begin
FileDialog.GetOptions(Settings);
Settings := Settings or FOS_PICKFOLDERS or FOS_FORCEFILESYSTEM;
FileDialog.SetOptions(Settings);
FileDialog.SetOkButtonLabel('Select');
Title := 'Select a directory';
FileDialog.SetTitle(PWideChar(Title));
hr := FileDialog.Show(0);
if hr = S_OK then
begin
hr := FileDialog.GetResult(IResult);
if hr = S_OK then
begin
IResult.GetDisplayName(SIGDN_FILESYSPATH, FileName);
Result := FileName;
end;
end;
end;
end;
用于找出它是什么,或更改它。两者都可以在TDirectory类的System.IOUtils命名空间中找到。假设您使用的是
TFileOpenDialog
组件,则需要设置该属性
如果您实际上使用的是
IFileDialog
,而不是TFileOpenDialog
。那么你应该使用这个方法。或者,根据您的具体需要,可能是合适的 不,这是进程工作目录。问题与对话框的初始目录有关。此外,System.IOUtils是一个单元而不是名称空间。@DavidHeffernan单元是名称空间。如果你没有另外指定对话框去一个特定的目录,那么它会使用进程工作目录。从中可以看出,在Delphi中,单元是类型的基本容器。在Delphi中,名称空间是Delphi单元的容器。将TFileOpenDialog
放到表单上,并运行其执行方法。您声明该对话框将在进程工作目录中打开。事实并非如此。既然你的答案有很多问题,我想你最好把它删掉。考虑到你是Embarcadero的一名员工,对一名员工来说,目前的市场营销还不是很好。在FM中,没有TFileOpenDialog,只有TopEndDialog。TopEndDialog没有默认的文件夹属性。您链接到的问题是关于在FMX中使用TFileOpenDialog,这是可能的。也许你应该花点时间问一个更清楚的问题。你的问题是如何使用IFileDialog吗?我注意到您的代码中没有包含错误检查。