Delphi之TreeView
TreeView是Delphi中使用频率比较高的一个控件,虽然使用次数很多,但总结不够。借着这次做GDW原型的机会总结一下,写的过程中也会参考网上的博文。
TTreeView、TTreeNodes和TTreeNode
TTreeView由节点构成,建树通过对TreeView.items属性进行操作。Items是一个TTreeNodes对象,这是一个TTreeNode集。
常用的属性
- Count,结点个数;
- Item[index],通过index得到结点;
- TTreeNode.Data,指向一个指针,可以存对象,存指针,也可以存整数;
- TTreeNode.Text,树结点的文本;
- TTreeNode.ImageIndex,TTreeNode.SelectedIndex,分别是树结点图标序号,树结点选中时图标序号,用于设置树结点的图标;
- TTreeNode.Expanded属性表明是否所有的子项都全部展开;
- TTreeNode.HasChildren属性表明一个项是否有子项;
- TTreeNode.Focused属性确定焦点是否落在此节点上,被Focus时会一个标准的方框围住,只能有一个节点会被聚焦。
- TTreeNode.Selected属性表明一个节点是否被选中,同样只有一个节点会被选中。
常用的方法
- GetFirstNode 得到根结点;
- TTreeNode.GetNext 得到本节点的下一个结点,配合GetFirstNode可以遍历整个树;
- AddFirst 添加第一个根节点,此函数添加的节点总排在前面,除非后来又使用此函数添加了一个节点,则后添加的节点将排在前面。返回新添加的节点。
- 然后以此为基础,添加此项的子节点。
- 删除节点:Treeview.Selected.Delete
- 编辑节点内容:Treeview.Selected.EditText
- 为了提升效率,避免界面大幅闪动,最好使用TreeView.Items.BeginUpdate 和 TreeView.Items.EndUpdate 方法;
设置树结点图标
- ImageIndex:在常态时选用的图的序号;
- SelectedIndex:当节点被选中时在TimageList 中选什么样的图象;
一段代码
Items.BeginUpdate;
Items.Clear;
// 建立第一层节点
AddElemntType2Tree(AElementTypeID, AAddNoChildNode);
// 建立第二层节点
if Items.GetFirstNode <> nil then
begin
oNode := Items[0]; // 选择第一个构件类型结点
while oNode <> nil do
begin
UpdateTreeNode(oNode, ASelectedElementID);
oNode := oNode.getNextSibling;
end;
end;
// 展开
if Selected <> nil then
Selected.Expanded := True
else if Items.Count > 0 then
begin
oNode := Items.GetFirstNode;
Assert(oNode <> nil);
// 选中第一个节点的第一个子节点(若存在则为第一个构件类型下的第一个构件)。
Selected := oNode.getFirstChild();
// 若没有选中构件,则选中第一个构件类型节点,否则展开节点。
if Selected = nil then
Selected := oNode
else
Selected.Expanded := True;
end;
Items.EndUpdate;
Delphi之TreeView的更多相关文章
- delphi中Treeview的使用介绍
今天重点学习了TreeView的使用方法,基本的已经写了,现在主要想说的是如何显示数据库的资料,今天只是做了个较简单的例子,一个父节点下显示数据库中某个field的值.代码如下: procedure ...
- delphi中TreeView使用(转)
delphi中TreeView使用(1) TreeView由节点构成,建树通过对TreeView.items属性进行操作.Items是一个TTreeNodes对象,这是一个TTreeNode集. 一. ...
- delphi 获取 TreeView选中的文件路径
//获取 TreeView选中的文件路径 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, G ...
- delphi 去掉TreeView水平滚动条
使用API函数:声明 FUNCTION ulong ShowScrollBar(ulong hwnd,ulong wBar,ulong bShow) LIBRARY "user32. ...
- Delphi下Treeview控件基于节点编号的访问
有时我们需要保存和重建treeview控件,本文提供一种方法,通过以树结构节点的编号访问树结构,该控件主要提供的方法如下: function GetGlobeNumCode(inNode:T ...
- Delphi下Treeview控件基于节点编号的访问1
有时我们需要保存和重建treeview控件,本文提供一种方法,通过以树结构节点的编号访问树结构,该控件主要提供的方法如下: function GetGlobeNumCode(inNode:T ...
- delphi学习treeview中从表列名和数据添加为目录并双击自动选中
1 unit Unit2; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, Syst ...
- 在DELPHI中用TreeView控件从数据库中动态装载信息
1.PInfo表结构ID VARCHAR(50)FullName VARCHAR(50)ParentID VARCHAR(50) 2.Unit文件unit Info; interface uses ...
- delphi treeview 鼠标移动显示hint信息
procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var Nod ...
随机推荐
- Mifare 1卡的存储结构
存取控制指符合什么条件才能对卡片进行操作. S50和S70的块分为数据块和控制块,对数据块的操作有“读”.“写”.“加值”.“减值(含传输和存储)”四种,对控制块的操作只有“读”和“写”两种. S50 ...
- Java文件末尾追加字符串
Java进行文件输出时,有时候想直接向已有文件末尾追加字符,而不是从头开始写,可以采用以下三种方式实现: package test; import java.io.File; import java. ...
- 转:ElasticSearch的安装和相关插件的安装
原文来自于:http://blog.csdn.net/whxaing2011/article/details/18237733 本文主要介绍如下内容: 1.ElasticSearch ...
- redgate
http://www.cnblogs.com/VAllen/archive/2012/09/08/SQLPrompt.html http://www.cnblogs.com/dotLive/archi ...
- 第23章 COM和ActiveX(COM可以实现跨进程跨机器的函数调用)
控件对象既可在EXE中实现,也可在DLL中实现.这种实现对于COM对象的用户来说是透明的.因为COM提供了调度服务(marshaling).COM调度机制能够化进程甚至跨机器的函数调用,这使得16位程 ...
- HDOJ 2114 Calculate S(n)(找周期)
Problem Description Calculate S(n). S(n)=1^3+2^3 +3^3 +--+n^3 . Input Each line will contain one int ...
- [Java] JavaMail 查询邮件
上两篇提到如何发送邮件:JavaMail 发送 html 格式.带附件的邮件, JavaMail 简单案例.本文再演示下,如何读取邮箱上的邮件. 邮件内容的数据格式种类比较多,用户直接阅读邮件比较常见 ...
- 使用javascript判断浏览器类型
之前在项目中遇到过要针对不同浏览器做不同的一些js或者css操作,后来某个朋友也突然问到这个问题,所以,整理了一下,在这里留个笔记,方便以后使用. 使用javascript判断浏览器类型: funct ...
- Fastjson Feathure
转载于:http://code.alibabatech.com/wiki/display/FastJSON/Serial+Features Fastjson序列化时,可以指定序列化的特性,以满足不同的 ...
- SAX PULL解析实例
XML三种解析方式: SAX解析:基于事件驱动,事件机制基于回调函数的,得到节点和节点之间内容时也会回调事件 PULL解析:相同基于事件驱动,仅仅只是回调时是常量 DOM解析:是先把XML文件装入内存 ...