Delphi:显示分配给Tree View节点的Frame

时间:2011-07-04 22:53:23

标签: delphi treeview frame

我没有框架经验。

如何使用带有框架的树视图? 我需要在树视图的点头之间切换,并将指定的帧显示到所选节点。

非常感谢帮助!!!

1 个答案:

答案 0 :(得分:2)

如果节点的Data持有指向框架或任何其他类型对象的指针,则没有任何区别,指向它所拥有的对象类型的指针。

下面的代码添加了两个框架('Frame2'和'Frame3',由IDE创建 - 很像一个新表单),作为TreeView的节点,并将所选节点框架的可见性设置为true,取消选择的框架的可见性为假。

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    procedure FormCreate(Sender: TObject);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure TreeView1Changing(Sender: TObject; Node: TTreeNode;
      var AllowChange: Boolean);
    procedure FormDestroy(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

uses Unit2, Unit3;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  TreeView1.Align := alLeft;

  with TFrame(TreeView1.Items.AddObject(nil, 'Frame2', TFrame2.Create(nil)).Data) do begin
    Visible := False;
    Parent := Self;
    Align := alClient;
  end;

  with TFrame(TreeView1.Items.AddObject(nil, 'Frame3', TFrame3.Create(nil)).Data) do begin
    Visible := False;
    Parent := Self;
    Align := alClient;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to TreeView1.Items.Count - 1 do
    TFrame(TreeView1.Items[i].Data).Free;
end;


procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  TFrame(Node.Data).Visible := True;
end;

procedure TForm1.TreeView1Changing(Sender: TObject; Node: TTreeNode;
  var AllowChange: Boolean);
begin
  if Assigned((Sender as TTreeView).Selected) then
    TFrame(TTreeView(Sender).Selected.Data).Visible := False;
end;