delphi中TreeView控件使用

上传人:飞****9 文档编号:131871091 上传时间:2020-05-10 格式:DOC 页数:17 大小:89.50KB
返回 下载 相关 举报
delphi中TreeView控件使用_第1页
第1页 / 共17页
delphi中TreeView控件使用_第2页
第2页 / 共17页
delphi中TreeView控件使用_第3页
第3页 / 共17页
delphi中TreeView控件使用_第4页
第4页 / 共17页
delphi中TreeView控件使用_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《delphi中TreeView控件使用》由会员分享,可在线阅读,更多相关《delphi中TreeView控件使用(17页珍藏版)》请在金锄头文库上搜索。

1、DELPHI中利用TreeView控件建立目录树2000-06-26 00:00:00 中国计算机报社pRainbow的话:关于TreeView的使用,还可以参看:联合使用TreeView 组件TreeView是一个显示树型结构的控件,通过它能够方便地管理和显示具有层次结构的信息,是Windows应用程序的基本控件之一。DELPHI虽然具有比较强大的文件管理功能,提供了多个用于文件管理的标准控件,如DriveComboBox、DirectoryListBox、FileListBox等,通过设置它们的属性,使其建立起联系,甚至不用编写一行程序,我们就可以实现在不同的目录之间进行切换,然而这样的目

2、录切换只适用于进行文件的查找定位,而不能方便地进行目录的浏览,例如我们要从c:windows目录转到c:program files目录,就必须返回到根目录才能进行切换,而不能象Windows资源管理器那样任意地在不同的目录之间进行浏览与切换。 要实现在不同目录之间任意切换和浏览,还是需要使用TreeView控件,以下程序就利用DELPHI的TreeView控件来建立目录树。 在该程序中采用的各部件以及界面设计如下图所示: 各部件的主要属性设置如下: 部件 属性属性值formname captionform1 目录浏览drivecommbobox name visibledrivecommbob

3、ox1 falsefilelistboxname visiblefiletype filelistbox1falsefddirectoryimagelist name imagelist1treeview name images 该程序利用DriveCommboBox控件来获得系统具有的驱动器,并以此作为目录树的最上层,利用FileListBox控件,通过设置其Filetype属性为fdDirectory,可以获得所需的子目录,在TreeView控件的OnExpanding事件中将得到的子目录加到该控件的某一节点下。 整个程序的源代码如下: unit main; interface uses

4、Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, FileCtrl, ComCtrls, ImgList; type TForm1 = class(TForm) DirTreeView: TTreeView; FileListBox1: TFileListBox; DriveComboBox1: TDriveComboBox; ImageList1: TImageList; procedure FormCreate(Sender: TObject); procedure DirT

5、reeViewExpanding(Sender: TObject; Node: TTreeNode;var AllowExpansion: Boolean); private Private declarations public Public declarations end; var Form1: TForm1; implementation $R *.DFM procedure TForm1.FormCreate(Sender: TObject); var FirstNode,DirNode : TTreeNode; ItemCount,Index:integer; Itemstr:st

6、ring; begin ItemCount:= DriveComboBox1.Items.Count; /所有驱动器的个数 FirstNode := DirTreeView.Items.GetFirstNode; for index := 0 to ItemCount -1 do begin ItemStr:= DriveComboBox1.Itemsindex; ItemStr:= copy(ItemStr,1,pos(:,ItemStr) ; /获得驱动器的名称(比如C/D) DirNode := DirTreeView.Items.AddChild(FirstNode, ItemStr

7、); DirNode.HasChildren := true; DirNode.ImageIndex := 0; DirNode.SelectedIndex := 1; end; end;/响应扩展事件 procedure TForm1.DirTreeViewExpanding(Sender: TObject; Node: TTreeNode;Var AllowExpansion: Boolean); var DirNode : TTreeNode; ItemCount,Index,level,icount:integer; Itemstr,strPath:string; begin if n

8、ode.Count = 0 then begin icount:=0; level:=node.Level ; dirnode:=node; strPath:=node.Text+ ; while level 0 do begin strPath:=dirnode.Parent.Text+strpath; dirnode:=dirnode.parent; level :=level -1; end; FileListBox1.Clear ; FileListBox1.Directory := strpath; ItemCount:= FileListBox1.Items.Count; for

9、index:=0 to ItemCount -1 do begin itemstr:=filelistbox1.itemsindex; itemstr:= copy(ItemStr,2,pos(,ItemStr)-2) ; if (itemstr.) and (itemstr .) then begin DirNode := DirTreeView.Items.AddChild(Node,itemstr ); DirNode.HasChildren :=true; DirNode.ImageIndex := 0; DirNode.SelectedIndex := 1; icount:=icou

10、nt+1; end; if icount = 0 then Node.HasChildren := false; end; end; end; end. 程序的运行效果如图所示:我们可以展开目录树中的任何一个节点,并且可以在任意节点之间切换,就象我们在Windows资源管理器中所作的那样,而不需要逐级回退之后才能进行切换。 我的DBTreeView-TreeView直接连接数据表 获取其他程序中TreeView的内容 在ASP.NET中使用Treeview控件和XML 利用Treeview实现树形列表 控件treeview的使用 TreeView使用笔记 取得的Outlook目录并在TTree

11、View里显示出来 Object TreeView简要说明 TreeView的使用Delphi中根据分类数据生成树形结构的最优方法很多系统都有类似于如下的表结构(table1):IDName ParentID-001 电子类0002金属类 0003 电容电子 001004 电阻电子 001005 有色金属002而且大家都习惯于用树(TreeView)来显示,这样就可以很好的显示整个表的分类情况。但如果数据量多时会造成树的生成比较慢,特别是用递归来实现时要访问数据库的次数很多(根据层数),用在三层中效果更加显。在此提供一个好的方法来生成树形结构。这个算法只访问一次数据库,具体的实现如下:1、一次

12、性从数据库中取出所有的数据,并按照ParentID字段进行排序,这样就保证每一条数据的父节点都在它的前面。2、取出第一条数据画到树中,在添加到树中时先找到这条数据的父节点,如果没有 则将此记录直接作为树的第一级节点3、如果还有数据,则取出来执行第2步,直到没有数据为止。程序实现: 本程序将用一个stlID的TStringList变量来存放对应树中每一个节点的ID值,用FindParent函数来父节点。function FindParent(ID:String):TTreeNode;var i:Integer;begin result:=nil; for i:=TreeView1.Items.C

13、ount-1 downto 0 doif stlID.Stringsi=ID then begin result:=TreeView1.Itemsi; break; end;end;/生成树procedure CreateTree;var tmpNode:TTreeNode;begin Query1.close; Query1.SQL.Text:=select * from table1 order by ParentID; Query1.Open; Query1.First; while not Query1.Eof do begin tmpNode:=TreeView1.Items.AddChild(FindParent(Query1.FieldByName(ParentID).AsString),Query1.FieldByName(Name)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号