日期:2011-03-20 18:14:00 来源:本站整理
Delphi中为TreeView增添单选和复选框[Delphi编程]
本文“Delphi中为TreeView增添单选和复选框[Delphi编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
翻开电脑,进入Windows操作系统,在资源管理器的左边栏中清楚地显示了系统管理的全部磁盘的信息以及各个磁盘所包容的文件与文件夹(如图一).这种常见的显示方法是由一个根节点和若干个子节点构成的,这被称为"树形构造".这种树形构造的用处非常遍及,在很多常用软件中都呈现过它的身影.Windows中将这种构造封装为"树形控件",即TreeView控件,它与ListView、Button等一样都属于系统自带的通用大众控件.在Delphi中,TreeView也被封装成了VCL组件,它的位置在"Win32组件"面板上,是我们最常用的几个组件之一.
Delphi自带的TreeView组件可以显示树形构造,也可认为每个节点指定差别的图标来辨别各自的功效.但在平常的利用中,我们发现它并不能嵌入CheckBox大概是RadioButton组件,这样用户就不能直观地挑选某一部份节点或某个节点.若何来办理这个问题呢?我们考虑之后发现,有两种思绪可以完成前面所述的任务.一种是在TreeView组件的底子上担当的它的功效,并增添所要的功效(使TreeView能嵌入CheckBox大概是RadioButton组件)即重写一个组件.另一种是操纵用户的错觉,将CheckBox大概是RadioButton所能实现的外观用两种状况的图片(一种是选中状况另一种是未选中状况)来交替显示,走迂回线路来完成任务.我们来解析一下这两种办法的优缺陷:第一种办法要重写一个组件,明显难度较大,所用时间较长;第二种办法,操纵TreeView组件本身就具有的显示图标功效,简便易行,所用时间短,可以完成需求.对比之后,我们挑选作用第二种办法,先来看一下完成之后的效果(如图二),应当说是到达了目的,目前我们来细述一下完成的历程:
首先,我们在Win32面板上挑选ImageList组件,设置它的StateImages属性,包含两种状况的图标,一种是选中状况,另一种是未先中状况.
其次,我们调用ToggleTreeView历程(实现办法见后文),实目前鼠标单击和键盘挑选的状况下改变状况图标的功效.
ToggleTreeView历程实现代码以下:
procedure ToggleTreeViewCheckBoxes( Node :TTreeNode; cUnChecked, //CheckBox未选中状况 cChecked, //CheckBox选中状况 cRadioUnchecked, //RadioButtion未选中状况 cRadioChecked :integer); // RadioButtion选中状况 var tmp:TTreeNode; begin if Assigned(Node) then begin //假如当前是未选中状况则变成选中状况 if Node.StateIndex = cUnChecked then Node.StateIndex := cChecked //假如当前是选中状况则变成未选中状况 else if Node.StateIndex = cChecked then Node.StateIndex := cUnChecked else if Node.StateIndex = cRadioUnChecked then begin tmp := Node.Parent; if not Assigned(tmp) then tmp := TTreeView(Node.TreeView).Items.getFirstNode else tmp := tmp.getFirstChild; while Assigned(tmp) do begin if (tmp.StateIndex in [cRadioUnChecked,cRadioChecked]) then tmp.StateIndex := cRadioUnChecked; tmp := tmp.getNextSibling; end; Node.StateIndex := cRadioChecked; end; // if StateIndex = cRadioUnChecked end; // if Assigned(Node) end; |
以上是“Delphi中为TreeView增添单选和复选框[Delphi编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论