当前位置:七道奇文章资讯编程技术Delphi编程
日期: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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 怎样ASP.NET MVC调用Delphi开辟的Web报表
  • delphi反汇编初探
  • 怎样在vc、delphi中利用mysql(mysql odbc驱动的利用)
  • 怎样在vc、delphi中利用mysql
  • 利用Delphi6的DBExpress组件衔接远程的Mysql数据库
  • Delphi中的Access本领集
  • 在Java与Delphi间交互实现Zlib压缩算法
  • 在C++Builder中利用Delphi文件
  • BCB6/Delphi7下完善调用CHM帮忙
  • BCB及Delphi工程文件扩大名一览
  • 在C++Builder中利用Delphi控件
  • 在Delphi与C++之间实现函数与对象同享
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .