学习 TTreeView [1] - TTreeNodes、TTreeNode 与 Items、Items.Count、Items.Clear
2008-03-10 14:56
405 查看
填写 TTreeView 的内容一般是这样开始的(下图), 不过我觉得最好习惯用动态建立.
![](http://images.cnblogs.com/cnblogs_com/del/124874/o_83111.gif)
打个比方: 譬如 TreeView 是一个军营的"营部"! 这里会有营长、连长、排长、班长、战士等等.
我们把它们分成三种对象: 营部、营长(总当家)、营长的下属.
在这里的对应关系是:
TTreeView - 营部
TTreeNodes - 营长
TTreeNode - 营长的下属
上面的例子中的"营长"不是具体的哪个元素, 他代表着全营, 很多事情都是他说了算;
其他成员都是"营长"的兵.
换成 Delphi 的说法:
TTreeView 不过是一个包含元素的框架, 最重要的是里面的元素;
每一个元素都是一个 TTreeNode 对象;
所有对象的集合也是一个对象: TTreeNodes, TTreeNodes 就像那个"营长"是个幕后管理者, 它对属下的所有成员有生杀大权.
学习 TreeView 要面对的不仅仅是 TTreeView 类, 更重要的是 TTreeNodes 和 TTreeNode 类.
TreeView1.Items 属性就是 TreeView1 的 TTreeNodes.
先做这样一个例子: 按照同样的编制, 再建一个营房.
准备工作: 在窗体上再添加一个 TreeView2 和一个按钮.
先看运行效果图:
![](http://images.cnblogs.com/cnblogs_com/del/124874/o_83112.gif)
代码:
![](http://images.cnblogs.com/cnblogs_com/del/124874/o_83111.gif)
打个比方: 譬如 TreeView 是一个军营的"营部"! 这里会有营长、连长、排长、班长、战士等等.
我们把它们分成三种对象: 营部、营长(总当家)、营长的下属.
在这里的对应关系是:
TTreeView - 营部
TTreeNodes - 营长
TTreeNode - 营长的下属
上面的例子中的"营长"不是具体的哪个元素, 他代表着全营, 很多事情都是他说了算;
其他成员都是"营长"的兵.
换成 Delphi 的说法:
TTreeView 不过是一个包含元素的框架, 最重要的是里面的元素;
每一个元素都是一个 TTreeNode 对象;
所有对象的集合也是一个对象: TTreeNodes, TTreeNodes 就像那个"营长"是个幕后管理者, 它对属下的所有成员有生杀大权.
学习 TreeView 要面对的不仅仅是 TTreeView 类, 更重要的是 TTreeNodes 和 TTreeNode 类.
TreeView1.Items 属性就是 TreeView1 的 TTreeNodes.
先做这样一个例子: 按照同样的编制, 再建一个营房.
准备工作: 在窗体上再添加一个 TreeView2 和一个按钮.
先看运行效果图:
![](http://images.cnblogs.com/cnblogs_com/del/124874/o_83112.gif)
代码:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls; type TForm1 = class(TForm) TreeView1: TTreeView; TreeView2: TTreeView; Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Button1.Caption := '转移'; Button2.Caption := '回防'; end; {转移: TreeView1 → TreeView2} procedure TForm1.Button1Click(Sender: TObject); begin if Boolean(TreeView1.Items.Count) then {如果其中元素总数不是 0} begin TreeView2.Items := TreeView1.Items; TreeView1.Items.Clear; end; end; {回防: TreeView2 → TreeView1} procedure TForm1.Button2Click(Sender: TObject); var Nodes: TTreeNodes; {尽早习惯使用 TTreeNodes} begin Nodes := TreeView2.Items; if Boolean(Nodes.Count) then begin TreeView1.Items := Nodes; TreeView2.Items.Clear; end; end; end.
相关文章推荐
- 学习 TTreeView [1] - TTreeNodes、TTreeNode 与 Items、Items.Count、Items.Clear
- BCB6 TTreeView、TTreeNodes和TTreeNode
- 学习 TTreeView [5] - TTreeNode.Level 属性
- 学习 TTreeView- TTreeNode 类的常用属性与 TTreeView 类的 OnChange 事件
- 学习使用TreeView 控件的TreeNode 对象来获取选中了CheckBox的节点!
- 学习 TTreeView [4] - TTreeNode 类的常用属性与 TTreeView 类的 OnChange 事件
- TreeView 控件 TreeNodeCheckChanged事件无法自动回发
- 【Count Complete Tree Nodes】cpp
- TreeList的VisibleNodesCount,Noes.Count,AllNdoesCount以及焦点节点的删除
- VS2008 TreeView控件的TreeNodeCheckChanged事件自动回发到服务器端
- Leetcode: Count Complete Tree Nodes
- [原]有TreeNode”并不包含“Nodes”的定义困扰的朋友看过来
- Count Complete Tree Nodes
- TreeView 触发 TreeNodeCheckChanged事件
- [Leetcode]Count Complete Tree Nodes
- LeetCode OJ 之 Count Complete Tree Nodes(计算完全二叉树的结点数目)
- TreeView插入节点的方法:TreeNodeCollection.Insert 方法 (Int32, TreeNode)
- leetcode Count Complete Tree Nodes
- Count Complete Tree Nodes - LeetCode 222
- Count Complete Tree Nodes