FastReport 不仅仅包含报表组件,它还提供更多功能!特别是,它有几个组件可以像其他 Delphi 组件一样在您的应用程序中使用,而且我们一直在向库中添加更多组件。在本文中,我们将介绍其中之一:TfrShellTreeView。
此组件旨在显示文件系统的元素,部分功能类似于 Delphi 中的 TDirectoryListBox、TDirectoryOutline 以及 Lazarus 中的 TShellTreeView 等组件。如果您想在不启动 IDE 的情况下查看其外观,您可以在资源管理器窗口左侧看到“树”。

该组件在 Windows 和 Linux 上均可良好运行,适用于 Delphi 和 Lazarus。不支持 FMX 开发。
TfrShellTreeView 利用了许多操作系统功能。例如,在 Windows 中,您可以像处理普通文件夹一样处理 zip 压缩包,甚至可以处理其中的内容——提取和添加文件。某些功能可能在 Linux 中不可用,具体取决于您运行的版本。不过不用担心:显示树状图和选择元素在任何操作系统上都能正常工作。
TfrShellTreeView 管理与操作系统交互的主要属性是 OptionsShell。

- ContextMenu — 指定是否显示所选文件的系统上下文菜单。
- ShowFolder — 此属性显示文件夹。
- ShowHidden — 此属性指示隐藏文件是否可见。
- ShowNonFolders — 此属性显示常规文件(不是文件夹)。
- TrackShellChanges — 此属性用于监视文件系统中的更改。如果您在组件中打开了任何文件夹并对其进行了修改(例如,您将文件复制到其中),则表示该文件的新节点将自动添加到组件中。
TfrShellTreeView 支持一组特定于标准文件对话框或 Windows 资源管理器的热键(Ctrl+С、Ctrl+V、Delete 等)以及标准对话框。
此外,TfrShellTreeView 组件支持在其自身以及其他(并非所有)文件管理器中拖放文件系统元素。OptionsBehavior.AllowDragDrop 属性用于允许拖放操作。拖放操作通过操作系统函数执行。
其余属性与 TTreeView 和 TfrTreeView 组件中的属性类似。但值得注意的是,它们按使用类型分组:OptionsBehavior、OptionsSelection、OptionsShell、OptionsView。这将帮助您快速找到所需的属性。
如上所述,该组件旨在显示计算机的文件系统。默认情况下,该组件配置为显示系统的根文件夹:Windows 中的“桌面”或 Linux 中的“/”。但是,该组件的功能并不仅限于此。
我们将 TfrShellTreeView 组件放置在窗体上并打开其编辑器:

TfrShellTreeView 编辑器看起来与 TTreeView 和 TfrTreeView 组件的编辑器类似,但它有 2 个新按钮:
- 新的 shell Root Item。
- 新的 shell Root SubItem。
正如我们在编辑器截图中看到的,该组件可以包含:
- 常规节点,仅包含文本,例如“新的简单项目 1”。
- 在文件系统中具有位置信息的节点,例如“本计算机”、“Lazarus”、“数据”。我们将这类节点称为 Shell 节点。
常规节点和子节点的创建和编辑方式与常规 TreeView 相同。
使用“新建 shell 根项”按钮可以创建指向文件结构元素的节点。这将创建一个与当前节点同级的 shell 节点。如果点击“新建 shell 根子项”,则会创建一个与当前节点相关的子 shell 节点。请注意,您无法为 shell 节点创建子节点,但可以为常规节点创建子节点。
编辑 Shell 节点归根结底就是指定给定节点链接到哪个文件夹。您可以使用 TfrRootNodes 类型的常量设置与文件夹的绑定。这些常量定义了诸如桌面、自动启动等位置。如果您设置了 rfCustomPath 常量,则可以在下方目录树中添加指向文件系统文件夹的路径。您也可以使用位于目录树下方的编辑窗口来设置此路径。例如,下面的屏幕截图设置了位于驱动器 C:\ 上的 Lazarus 文件夹的路径。

与常规 TreeView 类似,组件的常规节点可以分配图标。Shell 节点无法分配图标;它们使用操作系统中设置的图标。对于节点,实际使用的是 ImageIndex 属性中添加的图标索引。其余图标索引则不会被使用。此外,由于组件使用的特殊性,一些其他属性尚未实现。例如,无法选择多个元素。
最常用的属性当然是 TfrShellTreeView.SelectedPath。如果选中了一个 Shell 节点,则此属性包含该节点指向的文件夹的路径。否则,此属性等于空字符串。
此外,该组件还可以通过编程方式使用。您可以像添加常规 TTreeView 一样添加常规(非 shell)节点。
frShellTreeView1.Items.Add(nil,Edit1.Text); //add a root node with text from Edit1
向当前选定的节点添加一个节点:
procedure TForm1.Button5Click(Sender: TObject); var N:TfrShellTreeViewNode; begin N:=(frShellTreeView1.Selected) as TfrShellTreeViewNode; if N=nil then Exit; frShellTreeView1.Items.AddChild(N,Edit1.Text); end;
删除节点也很简单。例如,以下是删除当前选定节点的方法:
procedure TForm1.Button2Click(Sender: TObject); var N:TfrShellTreeViewNode; begin N:=(frShellTreeView1.Selected) as TfrShellTreeViewNode; if N=nil then exit; frShellTreeView1.Items.Delete(N); end;
但是,要删除一个节点,您只需调用其 Free 方法即可。
遗憾的是,该组件目前不支持生成与其关联的文件系统文件夹更改时发生的事件。该组件的其余功能与标准 TreeView 基本一致。
总而言之,FastReport 不仅是创建报表的工具,也是 Delphi 应用程序中可用的附加组件的来源。TfrShellTreeView 提供了一种便捷的方式来显示文件系统元素,并且适用于各种项目。FastReport 组件库不断更新,这使得该工具对开发人员更具吸引力。
_________________________________________________________
关于慧都科技:
慧都科技是一家行业数字化解决方案公司,长期专注于软件、油气与制造行业。公司基于深入的业务理解与管理洞察,以系统化的业务建模驱动技术落地,帮助企业实现智能化运营与长期竞争优势。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。慧都科技是FastReports的在中国区的合作伙伴,FastReports作为图表报表领域的优秀产品,帮助企业实现轻松构建高性能的表格及图表。
下载或体验FastReport产品,请联系在线客服咨询,或拨打产品热线:023-68661681
欢迎加入FastReport技术QQ群:170305738,与更多小伙伴探讨报表开发技能。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:FastReport控件中文网 [https://www.fastreportcn.com/]
本文地址:https://www.fastreportcn.com/post/3742.html