树形控件比较

本文主要对Delphi中的树形控件进行比较。TTreeView虽常用但面对更高要求时较复杂,作者寻找第三方树形控件,介绍了TdxTreeList、TdxDBTreeList、TVirtualTree等。其中TVirtualTree功能强大,效率和图形方面出色;TdxTreeList在单元格编辑等方面突出;TdxDBTreeList在数据库方面好用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

树形控件比较

  也许是受到WINDOWS资源管理界面的影响,树形控件(TTreeView)在软件界面中的使用也越来越广泛,其直观的表现形式、方便的操作方式,确实为界面增色不少(是啊,仿资源管理器界面,看着都亲切).TTreeView在DELPHI、BCB的自带界面控件中,基本上算得上是最复杂的控件之一.虽然它只是BORLAND对WINDOWS标准控件的VCL封装,对于一般的要求,使用起来还算方便.而对于更高一些的要求,就显得不是太方便了,如平滑的背景底图(网络蚂蚁)、自动跟踪的节点CheckBox(金山毒霸中目录、文件选择)和节点RadioButton、节点图标及状态图标控制、多列(TreeList)、与数据库表数据关联、高性能管理海量节点数、导出和打印等等,虽然用TTreeView也都能实现,但代码及控制的复杂性令人生畏,有时甚至超过程序本身完成的业务功能,实在不划算,论坛上关于这些方面问题帖子也是层出不穷.也不知道为什么BORLAND不提供一个更强大、使用更方便的TTreeView ( TTreeViewEx ? ),郁闷ing....

  看来咱只有自力更生......去寻找好用的第三方树形控件了,本人以前曾收集控件无数,试用的树形控件不下十个(太夸张了吧),很多试用过的都不太理想,连名字都不太记得了,有些连安都懒得安,打开源码看看属性事件继承关系代码质量等等就直接delete了,印象中较有特色的有T(xx)DBTree,TCheckTree,T(xx)TreeList等几个,一看名字就知道是
TreeView在某个方面功能的增强版,不提也罢.

  优秀的有TdxTreeList,TdxDBTreeList,TVirtualTree,TElTree等几个,都是从VCL的TCustomContorl继承下来的(与TTreeView封装WINDOWS标准控件不同),前两个(简称dxTrees)是大名鼎鼎的DevExpress QuantumGrid控件包中的,DevExpress公司的控件,只能用两个字形容:牛×,相信用过的人都有同感.TVirtualTree是free控件,绝对专业的"纯VCL"树形控件,功能强大,属性事件丰富,绝对满足你的定制要求,帮助文档(可惜是E文的)和DEMO也很全面,最新版本3.4.9支持DELHPI4567,BCB456,上面列举的种种"高级功能",有了它全都搞定,某些方面比dxTrees更强大(当然也有不如dxTrees的地方).至于TElTree,比起前面几个就差远了,界面上还过得去,最不可容忍的是效率问题,在节点数很多时(如几万,几十万个),删除(包括控件析构时)操作巨慢,不知道现在的最新版本有否改进,我很久以前就"喜新厌旧",不再使用它了.

  总的来讲,TdxTreeList,TdxDBTreeList,TVirtualTree属于同一级别的,各有侧重.

  TVirtualTree相当于TTreeView+TListView+ (TStringGrid 或 TDrawGrid),底图,节点级的Checked,Disabled,Visibled,HotTrack...,节点遍历,保存数据到流,到文件(rtf,html,txt...)
剪贴板支持,ole & vcl拖放支持,打印,排序,单元格编辑,Unicode支持,精细的外观和行为定制,太多太多功能,尤其在效率和图形方面,相当不错(具体可见help或demo).一旦拥有,别无所求! 吐血推荐! 缺点是数据库方面的直接支持和设计时的操作稍差(没有设计时节点编辑器),节点的操作,显示必须在运行时用代码实现,好象不如TdxTrees,但这是它的设计思想所决定的,即把数据和界面显示分离开,这点类似于VC中的TreeView,对于高手来说,也许正是所需要的.结论:★★★★★

  TdxTreeList相当于TTreeView+TListView+TStringGrid.与TVirtualTree相比,在单元格编辑和多层列头及设计时的操作方面很突出.结论:★★★★
  TdxDBTreeList相当于TTreeView+TListView+TDBGrid,在数据库方面更好用,网格编辑,多层列头,自动排序等等功能应有尽有,使用方便,界面豪华.结论:★★★★☆

  说实话,本人对DevExpress系列的控件用得并不是很多,也许对其品价有失公允,从树形单控件的角度综合评价,TVirtualTree确实是我用过的最好的控件之一.
  以上纯属个人意见,仅供参考.

附下载地址:

TVirtualTree:

http://www.delphi-gems.com/VirtualTreeview/VT.php

DevExpress QuantumGrid控件包 :

delphi窑洞,http://www.51delphhi.com

欢迎来信:   gmxyb@netease.com

delphi,学pascal那么久了,很多知识也都是互联网上搜索,也是依靠很多网友提供的资料去学习的,在此感谢互联网, 感谢那些技术分享的朋友们,近来打算在鄙人这年纪最后完成一个二次开发框架的软件(全凭自己的兴趣,因本人就一IT宅男,搞完后 估计本人也没有精力学习其它了),此软件想尽量少用第三方控件,但里面的DBTree功能不可避免,本以为网上找个DBTree是个手到擒来 的事情,没想到百度了一整天,居然没有一个好的DBTree,也许有人会说Ehlib的dbgridEH+Memtableeh可以,但这第三方软件包还需要带 有其它的东西,有点大,前面说过了,本软件想尽量少用第三方,除此外,国内的DBTree控件居然没有几个行的,看来delphi真的落寞了, 只能祝福delphi借xe5跨平台再次崛起吧!其实也不是说国产的DBTree没有,有那么两三个人做过,但我测试后很多问题,有些还把SQL做 到控件里,而且关联死TADOQuery,这样的控件让人以后如何用,国外的DBTree目前就发现一个还可以的是Dxdbtree, 公司也是大名顶顶的Developer Express Inc ,但不知道为何,网上找的只有1.3.1版本,而且只是For D7的,装上后, 发现还是要引用自己的内存数据(MemData)表才行,看了下源码,写得很复杂,晕啊,我只想找个简简单单功能的DBTree控件,怎么那么难呢, 要求也不高,只需要继承于TTreeView,载入数据表树结构,展示出一个TreeView,能简单的拖动,删除树结构的操作就行, 求人不如求自,既然简单的就自己来做一个控件吧!经过三天参看源码和网络技术资料搜索,基本学会了delphi控件开发了, 因鄙人之前并没有真正做过什么控件,最后做出来的结果感觉还是不错的,鄙人在此公布源码并对源码关键地方用中文详细注释, 目的是希望给以后有类似像我这样的找DBTree的朋友一点帮助!同时也是给初学delphi控件编程的朋友是一个好教材!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值