学习 TTreeView [3] - Add、AddChild、AddFirst、AddChildFirst、Parent
本例效果图:
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls; type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
end; var
Form1: TForm1; implementation {$R *.dfm} {方法1: 按职务顺序入场}
procedure TForm1.Button1Click(Sender: TObject);
var
Nodes: TTreeNodes;
node: TTreeNode;
begin
Nodes := TreeView1.Items; {添加第一个元素}
node := Nodes.Add(nil, '一连长'); {'一连长'好孤独, 旁边没人} {现在 node 代表"一连长", 继续添加与其平级人员, 当然要参照"一连长"}
Nodes.Add(node, '二连长');
Nodes.Add(node, '三连长'); {安排"一连"的下一层: "排长"; 同时让 node 指向"一排长"}
node := Nodes.AddChild(node, '一排长');
Nodes.Add(node, '二排长');
Nodes.Add(node, '三排长'); {添加平级用 Add, 添加下级用 AddChild; 继续:}
node := Nodes.AddChild(node, '一班长');
Nodes.Add(node, '二班长');
Nodes.Add(node, '三班长'); {还有 AddChildFirst 和 AddFirst 是专门添加第一个的, 假如忘了第一个...}
node := Nodes.AddChild(node, '战士2');
Nodes.Add(node, '战士3');
Nodes.Add(node, '战士4');
Nodes.AddFirst(node, '战士1'); {用 AddFirst 可以让它站在前面}
end; {方法2: 按先后顺序入场}
procedure TForm1.Button2Click(Sender: TObject);
var
Nodes: TTreeNodes;
node: TTreeNode;
begin
Nodes := TreeView1.Items; node := Nodes.Add(nil, '一连长');
node := Nodes.AddChild(node, '一排长');
node := Nodes.AddChild(node, '一班长');
node := Nodes.AddChild(node, '战士1');
Nodes.Add(node, '战士2');
Nodes.Add(node, '战士3');
Nodes.Add(node, '战士4'); node := node.Parent; {让 node 指向上一层}
Nodes.Add(node, '二班长');
Nodes.Add(node, '三班长'); node := node.Parent;
Nodes.Add(node, '二排长');
Nodes.Add(node, '三排长'); node := node.Parent;
Nodes.Add(node, '二连长');
Nodes.Add(node, '三连长');
end; {方法3: 因为没使用 TTreeNodes 和 TTreeNode, 挺麻烦的}
procedure TForm1.Button3Click(Sender: TObject);
begin
TreeView1.Items.Add(nil, '一连长');
TreeView1.Items.Add(TreeView1.Items[], '二连长');
TreeView1.Items.Add(TreeView1.Items[], '三连长'); TreeView1.Items.AddChild(TreeView1.Items[], '一排长');
TreeView1.Items.Add(TreeView1.Items[].Item[], '二排长');
TreeView1.Items.Add(TreeView1.Items[].Item[], '三排长'); TreeView1.Items.AddChild(TreeView1.Items[].Item[], '一班长');
TreeView1.Items.Add(TreeView1.Items[].Item[].Item[], '二班长');
TreeView1.Items.Add(TreeView1.Items[].Item[].Item[], '三班长'); TreeView1.Items.AddChild(TreeView1.Items[].Item[].Item[], '战士1');
TreeView1.Items.Add(TreeView1.Items[].Item[].Item[].Item[], '战士2');
TreeView1.Items.Add(TreeView1.Items[].Item[].Item[].Item[], '战士3');
TreeView1.Items.Add(TreeView1.Items[].Item[].Item[].Item[], '战士4');
end; {方法4: 用 with 简化了"方法3", 也够绕的; 推荐使用前两种方法}
procedure TForm1.Button4Click(Sender: TObject);
begin
with TreeView1 do begin
Items.Add(nil, '一连长');
Items.Add(Items[], '二连长');
Items.Add(Items[], '三连长'); Items.AddChild(Items[], '一排长');
Items.Add(Items[].Item[], '二排长');
Items.Add(Items[].Item[], '三排长'); Items.AddChild(Items[].Item[], '一班长');
Items.Add(Items[].Item[].Item[], '二班长');
Items.Add(Items[].Item[].Item[], '三班长'); Items.AddChild(Items[].Item[].Item[], '战士1');
Items.Add(Items[].Item[].Item[].Item[], '战士2');
Items.Add(Items[].Item[].Item[].Item[], '战士3');
Items.Add(Items[].Item[].Item[].Item[], '战士4');
end;
end; procedure TForm1.Button5Click(Sender: TObject);
begin
TreeView1.Items.Clear;
TButton(Sender).Caption := '清空';
end; end.
学习 TTreeView [3] - Add、AddChild、AddFirst、AddChildFirst、Parent的更多相关文章
- 类型TTreeView.items.add 与 TTreeView.items.addchild有何区别?(10分)
我看了书上例子,好象两者都可以实现treeview中的node 的构建. addchild是给当前的node建一个子node,它比当前node要向右缩进几格add建立同级的node,不缩进 aNode ...
- 学习 TTreeView [15] - 连接数据库 (作为给 "丁永其" 和 "DELPHI万岁" 两位朋友的回复)
本例效果图: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Contro ...
- 学习 TTreeView [16] - 给 TTreeView 添加复选框 (回复 "丁永其" 的问题)
问题来源: http://www.cnblogs.com/del/archive/2008/05/15/1114450.html#1199402 本例效果图: unit Unit1; interfac ...
- 学习 TTreeView [1] - TTreeNodes、TTreeNode 与 Items、Items.Count、Items.Clear
填写 TTreeView 的内容一般是这样开始的(下图), 不过我觉得最好习惯用动态建立. 打个比方: 譬如 TreeView 是一个军营的"营部"! 这里会有营长.连长.排长.班 ...
- Knockout学习笔记之二($root,$parent及$data的区别)
以下是我从Google上找到的一个例子,非常生动形象,我修改了部分代码,具体内容如下: 对于$root 与$parent的区别: $root refers to the view model appl ...
- java 学习List 的 add 与set差分法
/** * 在List收集在许多方面.add(int index,Object obj)方法与set(int index,Object e)方法不易区分 * .通过以下实例.能够看出两个方法中的差别 ...
- 学习MongoDB(三) Add an Arbiter to Replica Set 集群中加入仲裁节点
Add an Arbiter to Replica Set 在集群中加入仲裁节点,当集群中主节点挂掉后负责选出新的主节点,仲裁节点也是一个mongo实力,但是它不存储数据. 1.仲裁节点消耗很小的资源 ...
- PHP学习笔记之析构函数以及static,self,parent关键字
引用 $jordan1 = &$jordan; 当jordan1 = null; //此时会直接调用析构函数 而当无&时,就需要等到所有的引用都为null时,才调用析构函数析构 乔丹 ...
- 学习 TTreeView [2] - Items.Item[i]、Items[i]、.Text、SetFocus(设置焦点)、Select(选择)
本例效果图: 源码: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Co ...
随机推荐
- JAVA程序员必看的15本书-JAVA自学书籍推荐
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...
- Storm 运行例子
1.建立Java工程 使用idea,添加lib库,拷贝storm中lib到工程中 2.拷贝wordcount代码 下载src包,解压找到 apache-storm-0.9.4-src\apache-s ...
- 03-Python执行方式和Pycharm设置
https://www.python.org/ 单词列表 * error 错误 * name 名字 * defined 已经定义 * syntax 语法 * invalid 无效 * Indentat ...
- MS SQL Server字符拆分函数
Insus.NET以前有用XQuery的nodes()方法写过一个函数,是MS SQL字符拆分的函数,http://www.cnblogs.com/insus/archive/2012/02/26/2 ...
- 大数据入门第十七天——storm上游数据源 之kafka详解(一)入门与集群安装
一.概述 1.kafka是什么 根据标题可以有个概念:kafka是storm的上游数据源之一,也是一对经典的组合,就像郭德纲和于谦 根据官网:http://kafka.apache.org/intro ...
- FakeID签名漏洞分析及利用(二)
本文转自:http://blog.csdn.net/l173864930/article/details/38409521 继上一次Masterkey漏洞之后,Bluebox在2014年7月30日又公 ...
- 20155211 Exp4 恶意代码分析
20155211 Exp4 恶意代码分析 实践目标 1 监控你自己系统的运行状态,看有没有可疑的程序在运行. 2 是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或 ...
- vue-cli,build 后,报错的解决办法
报错如下图: 或: 解决办法:config / index.js 中,找到 build { assetsPublicPath: '/' },将其设置为:assetsPublicPath: './ ' ...
- DynamicDataDisplay 实时曲线图的使用和沿轴移动的效果
原文:DynamicDataDisplay 实时曲线图的使用和沿轴移动的效果 由于项目需要,最近在找关于绘制实时曲线图的文章,但看了很多自己实现的话太慢,所以使用了第三方控件来实现(由 ...
- PostgreSQL基础知识与基本操作索引页
磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 luckyjackgao@gmail.com 本页记录所有本人所写的PostgreSQL的基础知识和基本操作相关文摘和 ...