【问题标题】:Initial Directory on filedialog in DelphiDelphi中文件对话框的初始目录
【发布时间】:2015-11-24 04:10:18
【问题描述】:

我需要知道如何使用此链接中的示例设置初始目录。

TFileOpenDialog in FireMonkey Application

这是我正在使用的代码,除了能够设置初始文件夹之外,它工作正常。

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;

【问题讨论】:

    标签: delphi filedialog


    【解决方案1】:

    假设您使用的是TFileOpenDialog 组件,那么您需要设置DefaultFolder 属性。

    如果实际上您使用的是IFileDialog 而不是TFileOpenDialog。然后你应该使用SetDefaultFolder 方法。或者,根据您的具体需求,SetFolder 可能是合适的。

    【讨论】:

    • 在 FM 中没有 TFileOpenDialog 只有 TOpenDialog。并且 TOpenDialog 没有默认的文件夹属性。
    • 您链接到的问题询问有关在 FMX 中使用 TFileOpenDialog 是可能的。也许你应该花一些时间来问一个更清楚的问题。您的问题只是如何使用 IFileDialog 吗?我注意到您没有在代码中包含错误检查。
    【解决方案2】:

    使用GetCurrentDir 找出它是什么,或使用SetCurrentDir 改变它。两者都可以在 TDirectory 类的 System.IOUtils 命名空间中找到。

    【讨论】:

    • 没有。那是进程工作目录。问题与对话框的初始目录有关。
    • 另外,System.IOUtils 是一个单元而不是命名空间。
    • @DavidHeffernan 单位是命名空间。如果您没有以其他方式指定对话框以转到特定目录,则它使用进程工作目录。
    • 不是这样。来自documentation在Delphi 中,单元是类型的基本容器。在 Delphi 中,命名空间是 Delphi 单元的容器。
    • TFileOpenDialog 拖放到表单上并运行其执行方法。您声称该对话框将在进程工作目录中打开。它不是。由于您的答案有很多问题,我认为您最好将其删除。考虑到您是 Embarcadero 的员工,对于员工来说,离目标如此之远并不是很好的营销。
    猜你喜欢
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2013-03-12
    • 2012-05-29
    • 1970-01-01
    • 2013-07-19
    相关资源
    最近更新 更多