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


    填写 TTreeView 的内容一般是这样开始的(下图), 不过我觉得最好习惯用动态建立.


    打个比方: 譬如 TreeView 是一个军营的"营部"! 这里会有营长、连长、排长、班长、战士等等.

    我们把它们分成三种对象: 营部、营长(总当家)、营长的下属.

    在这里的对应关系是:
    TTreeView - 营部
    TTreeNodes - 营长
    TTreeNode - 营长的下属

    上面的例子中的"营长"不是具体的哪个元素, 他代表着全营, 很多事情都是他说了算;
    其他成员都是"营长"的兵.

    换成 Delphi 的说法: TTreeView 不过是一个包含元素的框架, 最重要的是里面的元素;
    每一个元素都是一个 TTreeNode 对象;
    所有对象的集合也是一个对象: TTreeNodes, TTreeNodes 就像那个"营长"是个幕后管理者, 它对属下的所有成员有生杀大权.

    学习 TreeView 要面对的不仅仅是 TTreeView 类, 更重要的是 TTreeNodes 和 TTreeNode 类.

    TreeView1.Items 属性就是 TreeView1 的 TTreeNodes.

    先做这样一个例子: 按照同样的编制, 再建一个营房.
    准备工作: 在窗体上再添加一个 TreeView2 和一个按钮.
    先看运行效果图:


    代码:
    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.
    
  • 相关阅读:
    数据库被注入daxia123原因及解决办法
    Alipay数字证书管理员权限问题
    关闭数据库的xp_cmdshell命令以防止黑客攻击
    如何使用JavaScript来写ASP程序
    VBscript操作DOM
    如何做好性能压测丨压测环境设计和搭建
    10倍性能提升!DLA SQL推出基于Alluxio的数据湖分析加速功能
    高德地图驾车导航内存优化原理与实战
    「直播实录」中英数据库专家谈:数据库的过去、未来和现在
    Flink 助力美团数仓增量生产
  • 原文地址:https://www.cnblogs.com/del/p/1098798.html
Copyright © 2020-2023  润新知