SelectDirectory()不起作用。它总是返回false

时间:2019-07-03 16:19:44

标签: delphi firemonkey

每当我打电话给Res := SelectDirectory('Test', '', Dir)时,Res始终为假。我希望可以在电话上打开一个窗口,从中可以选择一个文件夹。第二个参数为空白应表示已显示所有文件夹。

我尝试了一些我知道存在的文件夹,例如Programs文件夹,SharedCamera等。没有区别,它仍然无法正常工作。

Root:= '';
Res:= SelectDirectory('Test', Root, Dir); // Always returns false.

{I tried Root:= System.IOUtils.TPath.GetPicturesPath + System.IOUtils.TPath.DirectorySeparatorChar;
and Root:= System.IOUtils.TPath.GetPicturesPath + System.IOUtils.TPath.DirectorySeparatorChar + '*.*';
and several others.}

我总是收到Res = False,并且没有显示窗口。

2 个答案:

答案 0 :(得分:0)

下面的代码对我来说很好用,并在西雅图Delphi中编译为FMX项目。

尝试在调试器中单步执行它,然后查看它是否有效。 Asset行执行后会发生什么?

procedure TForm2.TestSelectDirectory;
var
  BoolRes : Boolean;
  Dir : String;
  Path : String;
  S : String;
begin
  Path := 'C:\Temp';
  Assert(DirectoryExists(Path));
  BoolRes := SelectDirectory('Testing SelectDirectory', Path, Dir);
  if BoolRes then
    S := 'Succeeded '
  else
    S := 'Failed  ';
  S := Format(S + '%s', [Dir]);
  Memo1.Lines.Add(S);
end;

答案 1 :(得分:0)

我制作了自己的版本,而不是不起作用的正式版本。