在 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/