【温故Delphi】之TreeView
2013-03-05 18:27
1161 查看
TreeView是Delphi中使用频率比较高的一个控件,虽然使用次数很多,但总结不够。借着这次做GDW原型的机会总结一下,写的过程中也会参考网上的博文。
Item[index],通过index得到结点;
TTreeNode.Data,指向一个指针,可以存对象,存指针,也可以存整数;
TTreeNode.Text,树结点的文本;
TTreeNode.ImageIndex,TTreeNode.SelectedIndex,分别是树结点图标序号,树结点选中时图标序号,用于设置树结点的图标;
TTreeNode.Expanded属性表明是否所有的子项都全部展开;
TTreeNode.HasChildren属性表明一个项是否有子项;
TTreeNode.Focused属性确定焦点是否落在此节点上,被Focus时会一个标准的方框围住,只能有一个节点会被聚焦。
TTreeNode.Selected属性表明一个节点是否被选中,同样只有一个节点会被选中。
TTreeNode.GetNext 得到本节点的下一个结点,配合GetFirstNode可以遍历整个树;
AddFirst 添加第一个根节点,此函数添加的节点总排在前面,除非后来又使用此函数添加了一个节点,则后添加的节点将排在前面。返回新添加的节点。
AddChild添加一个子节点,要求有父节点作为其参数。返回新添加的节点。
Add添加一个兄弟节点,要求有兄弟节点作为其参数。返回新添加的节点。
TTreeNode的一些结点关系方法:GetFirstChild, GetLastChild, GetPrevChild, and GetNextChild分别返回当前项子项的第一个、最后一个和前一个、后一个项。GetNextSibling、 GetPrevSibling则返回在同一Level下的下一个和上一个项。
当修改一个节点的text时,会触发TTreeView.OnEdit事件。
删除节点:Treeview.Selected.Delete
编辑节点内容:Treeview.Selected.EditText
为了提升效率,避免界面大幅闪动,最好使用TreeView.Items.BeginUpdate 和 TreeView.Items.EndUpdate 方法;
SelectedIndex:当节点被选中时在TimageList 中选什么样的图象;
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 添加第一个根节点,此函数添加的节点总排在前面,除非后来又使用此函数添加了一个节点,则后添加的节点将排在前面。返回新添加的节点。
AddChild添加一个子节点,要求有父节点作为其参数。返回新添加的节点。
Add添加一个兄弟节点,要求有兄弟节点作为其参数。返回新添加的节点。
TTreeNode的一些结点关系方法:GetFirstChild, GetLastChild, GetPrevChild, and GetNextChild分别返回当前项子项的第一个、最后一个和前一个、后一个项。GetNextSibling、 GetPrevSibling则返回在同一Level下的下一个和上一个项。
常用的事件
当从一个节点跳到另一个节点,会触发TTreeView.OnChange事件。该事件中,将传递node,即当前被选中的节点。当修改一个节点的text时,会触发TTreeView.OnEdit事件。
TreeView的常见使用方法
添加、删除和编辑树结点
用AddFirst, AddFirstChild, AddChild等先添加根节点,如Treeview.Items.AddFirst( nil, 'Root');然后以此为基础,添加此项的子节点。删除节点: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某个节点下所有节点的函数
- Delphi之Virtual Treeview使用心得
- delphi TreeView 从数据库添加节点的四种方法
- Delphi之TreeView
- Delphi中使用ListView和TreeView的Item中的Data可能被忽略的内存泄漏
- delphi 文件或目录转换成 TreeView
- delphi中treeview的节点选择问题
- Delphi TreeView 设置树全部展开
- (原创)浅谈Delphi高效使用TreeView
- DELPHI: TTreeView 中禁止双击事件展开或关闭节点.
- delphi DBTreeview与数据库连接的数据存取
- Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem
- 在Delphi 2010中安装ShellTreeView等控件
- Delphi中为TreeView添加单选和复选框
- 【温故Delphi】Win32API之CreateMutex
- Delphi TreeView 设置树全部展开
- delphi treeview控件问题,寻求帮助!!!
- delphi treeview删除节点
- Delphi 中递归生成TreeView节点的方法