Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>It doesn't really make any difference if the <code>Data</code> of nodes hold a pointer to a frame or any other kind of object, typecast the pointer to the type of object it holds.</p> <p>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.</p> <pre><code>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; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload