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吗?我注意到您的代码中没有包含错误检查。