【问题标题】:Any component for displaying the file-system / file-tree in FireMonkey?任何用于在 FireMonkey 中显示文件系统/文件树的组件?
【发布时间】:2012-01-01 00:51:23
【问题描述】:

在 FireMonkey 框架中找不到任何文件树组件(当然是跨平台的)。任何人有任何想法或知道这样的组件?对我来说听起来很基本。

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

【问题讨论】:

  • 你必须等待,我还没有看到、读过或听说过这样的comoonent,xe2还不是很成熟,所以要么给它一些时间,要么自己创建.. .

标签: delphi shell firemonkey


【解决方案1】:

没有组件(开箱即用),但您可以使用可在所有平台上运行的单元 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 向您展示了另一条记录,它可能也很有用...

【讨论】:

  • 非常感谢!将等待更多的 cmets,如果没有将标记为最佳答案。
  • 不着急..慢慢来:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 1970-01-01
  • 2017-01-07
  • 2010-10-15
相关资源
最近更新 更多