Delphi FMX 中没有任何 ShellListView/ShellTreeView 组件。那么,如何在 Delphi FMX 中制作像文件管理器一样的资源管理器?只是简单地计算有多少文件/文件夹,某些类型的文件......并创建文本,读/写文件。如何在 Delphi FMX 中处理文件系统?我在 Delphi FMX 中找不到 System.IOUtils。我想,也许我完全误解了 FMX 框架。有什么提示吗?
谢谢!!!
胡米切尔
Delphi FMX 中没有任何 ShellListView/ShellTreeView 组件。那么,如何在 Delphi FMX 中制作像文件管理器一样的资源管理器?只是简单地计算有多少文件/文件夹,某些类型的文件......并创建文本,读/写文件。如何在 Delphi FMX 中处理文件系统?我在 Delphi FMX 中找不到 System.IOUtils。我想,也许我完全误解了 FMX 框架。有什么提示吗?
谢谢!!!
胡米切尔
Firemonkey 是一个可视化框架。人们对 Embarcadero 的营销方式如此着迷,以至于他们常常没有意识到 VCL 可以完成的大部分工作也可以通过 Firemonkey 完成——它只是需要不同的方法和视角。
使用 VCL,您将处理 Windows 本身固有的控件。VCL 只是通过 Delphi(和 C++)语言公开这些。
使用 Firemonkey,控件是使用矢量形状创建的,因此它们不是特定平台的原生控件。因此,可以创建任何类型的界面并在众多平台上运行它。在 FMX 发布的同时,Embarcadero 使他们的单元跨平台,这意味着 Delphi 包含的大多数逻辑和数据单元可以在 Firemonkey 支持的任何平台上运行。一些功能仍然是特定于平台的,但由于巧妙地使用了IFDEF ,大多数功能都是平台包容性的。
在您的示例中,System.IOUtils
它并不特定于框架,并且可以与 Firemonkey 一起使用。您确实需要先将其添加到您的uses
文件中,然后才能使用它,但该单元包含创建文件管理器所需的一切。System.IOUtils.TDirectory
包含用于创建、重命名、删除、遍历和操作目录属性的例程。您可以在 Google 上找到的许多旧示例例程仍然有效(您可能需要查找“递归目录”示例)。System.IOUtils.TFile
提供了一组类似的例程,但用于文件而不是目录,而System.IOUtils.TPath
为路径提供它们。
扩建 2013 年 4 月 14 日
TTreeView
与孩子一起使用TTreeViewItem
将有助于在视觉中创建目录结构。
UsingSystem.IOUtils.TDirectory.GetDirectories('C:\')
将返回一个动态字符串数组 ( TStringDynArray
)。这样的事情可能会起作用(注意:经过测试- 确认下面的代码示例有效);
var
DirArraySize, i : Integer;
DirArray : TStringDynArray;
TreeItem : TTreeViewItem;
begin
DirArray := System.IOUtils.TDirectory.GetDirectories('C:\');
DirArraySize := Length(DirArray);
for i := 0 to DirArraySize-1 do
begin
TreeItem := TTreeViewItem.Create(TreeView1);
TreeItem.text := DirArray[i];
TreeItem.Parent := TreeView1;
end;
end;
我现在已经测试了上面的代码,并在进行了小幅更正后(应该更改MyArray
为DirArray
第 6 行),并且可以确认它将 C:\ 中的文件夹/目录列表输出到TTreeView
. 使其递归不会太困难,也许我会在不久的将来对此进行扩展。