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将有助于在视觉对象中创建目录结构。
使用System.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;
Run Code Online (Sandbox Code Playgroud)
现在,我已经测试了上面的代码,并在进行了小幅修正之后(按应有的方式更改MyArray为DirArray第 6 行),并且可以确认它将 C:\ 中的文件夹/目录列表输出到TTreeView. 使其递归不会太困难,也许我会在不久的将来对此进行扩展。
| 归档时间: |
|
| 查看次数: |
6159 次 |
| 最近记录: |