delphi - FireMonkey 中是否有用于显示文件系统/文件树的组件?

标签 delphi shell firemonkey

在 FireMonkey 框架中找不到任何文件树组件(当然是跨平台的)。任何人都知道或知道这样的组件吗?对我来说听起来像是一个基本的事情。

我正在寻找一个简单的“类似资源管理器”的 TreeView ,如果它真的很漂亮,那并不重要,因为我可以重新设计它或继承和更改它。想法?...

最佳答案

没有没有组件(开箱即用),但您可以使用适用于所有平台的单元System.IOUtils快速实现它。

例如,给您一个想法:

uses
  System.IOUtils, FMX.TreeView, ...

type
  TForm2 = class(TForm)
    tvPath: TTreeView;
    procedure FormCreate(Sender: TObject);
  private
...

procedure TForm2.FormCreate(Sender: TObject);
var
  sRoot    : string;
  sdaDrives: TStringDynArray;
  sDrive   : string;
  tviDrive : TTreeViewItem;
  osv      : TOSVersion;
begin
  if TOSVersion.Platform = pfMacOS then
  begin
    // Root's folders
    sRoot     := '/';
    sdaDrives := TDirectory.GetDirectories(sRoot);
    for sDrive in sdaDrives do
    begin
      tviDrive      := TTreeViewItem.Create(Self);
      tviDrive.Text := sDrive;
      tvPath.AddObject(tviDrive);
    end;
    sdaDrives := TDirectory.GetFiles(sRoot);
  end
  else
  begin
    // Root's folders
    sRoot     := TDirectory.GetDirectoryRoot(ParamStr(0)); // you probably want to use TDirectory.GetLogicalDrives before this one...
    sdaDrives := TDirectory.GetDirectories(sRoot);
    for sDrive in sdaDrives do
    begin
      tviDrive      := TTreeViewItem.Create(Self);
      tviDrive.Text := sDrive;
      tvPath.AddObject(tviDrive);
    end;
    sdaDrives := TDirectory.GetFiles(sRoot);
  end;
  // files
  for sDrive in sdaDrives do
  begin
    tviDrive            := TTreeViewItem.Create(Self);
    tviDrive.Text       := ExtractFileName(sDrive);
    tviDrive.Font.Style := [TFontStyle.fsItalic];
    tvPath.AddObject(tviDrive);
  end;
end;

这只是一个概念证明,因为它适用于两个平台..当然,还有一些工作要做...... 我已经使用 System.SysUtils.TOSVersion 向您展示了另一条可能也有用的记录...

关于delphi - FireMonkey 中是否有用于显示文件系统/文件树的组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8179348/

相关文章:

linux - 尝试运行扩展 GIT 的脚本

linux - 是否可以从 stdin、stdout、stderr 以外的 fd 重定向输入/输出

listview - 如何使用 DynamicAppearance 将项目添加到 TListView?

delphi - 以字符串获取中间/开头/结尾阿拉伯字符

delphi - 如何将FireMonkey表单无缝嵌入VCL表单中?

multithreading - 确保所有 TThread.Queue 方法在线程自毁之前完成

Delphi:Clientdataset:.Open 上的 EDatabaseError;设置了 ProviderName

delphi - 在构建 Delphi 应用程序时生成增量版本

Delphi - 以只读方式打开 zip 文件

java - 获取从 shell 脚本到 java 代码的状态报告