Delphi:显示分配给树视图节点的框架

发布于 2024-11-18 19:39:52 字数 87 浏览 6 评论 0原文

我对框架没有经验。

如何使用带有框架的树视图? 我需要在树视图的节点之间切换并显示分配给所选节点的框架。

大大大大感谢帮助!!!

I have no experience with frames.

How to use a Tree View with frames?
I need to switch among nods of the Tree View and show assigned Frame to the selected node.

Big big thank for help!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

女皇必胜 2024-11-25 19:39:52

如果节点的 Data 持有指向框架或任何其他类型对象的指针,将指针类型转换为它所持有的对象类型,这并没有什么区别。

下面的代码添加两个框架(“Frame2”和“Frame3”,由 IDE 创建 - 非常类似于新表单)作为 TreeView 的节点,并将所选节点框架的可见性设置为 true,将取消选择的框架的可见性设置为 false。

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;

It doesn't really make any difference if the Data of nodes hold a pointer to a frame or any other kind of object, typecast the pointer to the type of object it holds.

Below code adds two frames ('Frame2' and 'Frame3', created by the IDE - much like a new form), as nodes of a TreeView, and sets the visibility of the selected node's frame to true and the deselected one's to false.

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文