如何在Delphi FMX中创建类似文件管理器的资源管理器?

时间:2013-04-10 04:18:49

标签: delphi firemonkey

在Delphi FMX中没有任何ShellListView / ShellTreeView组件。 那么,如何在Delphi FMX中创建像文件管理器这样的资源管理器? 只是简单的计算有多少文件/文件夹,某些类型的文件.. 并创建文本,读/写文件。 如何在Delphi FMX中处理文件系统? 我在Delphi FMX中找不到System.IOUtils。 我想,也许我完全误解了FMX框架。 任何提示?

感谢!!!

Mitchell Hu

1 个答案:

答案 0 :(得分:4)

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为路径提供了它们。

System.IOUtils on XE3 Docwiki

扩展2013年4月14日

TTreeViewTTreeViewItem子项一起使用可以在视觉中创建目录结构。

使用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;

我现在已经测试了上面的代码并进行了一些小的修正(在第6行将MyArray改为DirArray,并且可以确认它输出了一个文件夹/目录列表在C:\中TTreeView。使其递归并不会太困难,也许我会在不久的将来扩展它。