本例效果图:


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的更多相关文章

  1. 类型TTreeView.items.add 与 TTreeView.items.addchild有何区别?(10分)

    我看了书上例子,好象两者都可以实现treeview中的node 的构建. addchild是给当前的node建一个子node,它比当前node要向右缩进几格add建立同级的node,不缩进 aNode ...

  2. 学习 TTreeView [15] - 连接数据库 (作为给 "丁永其" 和 "DELPHI万岁" 两位朋友的回复)

    本例效果图: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Contro ...

  3. 学习 TTreeView [16] - 给 TTreeView 添加复选框 (回复 "丁永其" 的问题)

    问题来源: http://www.cnblogs.com/del/archive/2008/05/15/1114450.html#1199402 本例效果图: unit Unit1; interfac ...

  4. 学习 TTreeView [1] - TTreeNodes、TTreeNode 与 Items、Items.Count、Items.Clear

    填写 TTreeView 的内容一般是这样开始的(下图), 不过我觉得最好习惯用动态建立. 打个比方: 譬如 TreeView 是一个军营的"营部"! 这里会有营长.连长.排长.班 ...

  5. Knockout学习笔记之二($root,$parent及$data的区别)

    以下是我从Google上找到的一个例子,非常生动形象,我修改了部分代码,具体内容如下: 对于$root 与$parent的区别: $root refers to the view model appl ...

  6. java 学习List 的 add 与set差分法

    /** * 在List收集在许多方面.add(int index,Object obj)方法与set(int index,Object e)方法不易区分 * .通过以下实例.能够看出两个方法中的差别 ...

  7. 学习MongoDB(三) Add an Arbiter to Replica Set 集群中加入仲裁节点

    Add an Arbiter to Replica Set 在集群中加入仲裁节点,当集群中主节点挂掉后负责选出新的主节点,仲裁节点也是一个mongo实力,但是它不存储数据. 1.仲裁节点消耗很小的资源 ...

  8. PHP学习笔记之析构函数以及static,self,parent关键字

    引用 $jordan1 = &$jordan; 当jordan1 = null; //此时会直接调用析构函数 而当无&时,就需要等到所有的引用都为null时,才调用析构函数析构  乔丹 ...

  9. 学习 TTreeView [2] - Items.Item[i]、Items[i]、.Text、SetFocus(设置焦点)、Select(选择)

    本例效果图: 源码: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Co ...

随机推荐

  1. spring amqp初步了解

    Rabbitmq简介 生产者会把消息发送给RabbitMQ的交换中心(Exchange),Exchange的一侧是生产者,另一侧则是一个或多个队列,由Exchange决定一条消息的生命周期--发送给某 ...

  2. cloudstack 创建虚拟机失败

    Trying to find a potenial host and associated storage pools from the suitable host/pool lists for th ...

  3. golang交叉编译:Linux - Windows

    环境:Debian jessiego 1.7.4Windows 7 背景: 在debian中写好的程序编译后在windows上运行. 程序中使用了sqlite3 import( _ "git ...

  4. hung task机制

    最近在修改内核源码的时候一直出现格式化磁盘的时候,进程会出现状态D,看内核日志会看到如下信息: INFO: task filebench: blocked seconds. Oct :: localh ...

  5. 遍历目录删除指定MD5值的文件

    工作需要实现一个查找出指定目录下md5值与excel表格中md5值相同的文件然后删掉的功能.我是这样做的:首先遍历指定目录,计算该目录下所有文件的md5值,以文件路径为key,md5值为value保存 ...

  6. VB6 选择文件夹路径

    '--------------------------------------------------------------------------------------- ' Module : ...

  7. 20155209林虹宇 Exp6 信息搜集与漏洞扫描

    Exp6 信息搜集与漏洞扫描 1.信息收集 1.1通过DNS和IP挖掘目标网站的信息 whois查询 进行whois查询时去掉www等前缀,因为注册域名时通常会注册一个上层域名,子域名由自身的域名服务 ...

  8. 20155304田宜楠《网络对抗技术》Exp1 PC平台逆向破解(5)M

    Exp1 PC平台逆向破解(5)M 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序 ...

  9. WPF编程,窗口保持上次关闭时的大小与位置。

    原文:WPF编程,窗口保持上次关闭时的大小与位置. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/8 ...

  10. 探索sklearn | K均值聚类

    1 K均值聚类 K均值聚类是一种非监督机器学习算法,只需要输入样本的特征 ,而无需标记. K均值聚类首先需要随机初始化K个聚类中心,然后遍历每一个样本,将样本归类到最近的一个聚类中,一个聚类中样本特征 ...