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

填写 TTreeView 的内容一般是这样开始的(下图), 不过我觉得最好习惯用动态建立.
学习 TTreeView [1] - TTreeNodes、TTreeNode 与 Items、Items.Count、Items.Clear

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

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

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

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

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

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

TreeView1.Items 属性就是 TreeView1 的 TTreeNodes.

先做这样一个例子: 按照同样的编制, 再建一个营房.
准备工作: 在窗体上再添加一个 TreeView2 和一个按钮.
先看运行效果图:
学习 TTreeView [1] - TTreeNodes、TTreeNode 与 Items、Items.Count、Items.Clear

代码:

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.


 
   

你可能感兴趣的:(treeview)