1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| unit TreeView_MainForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
Panel8: TPanel;
procedure TreeView1DblClick(Sender: TObject);
procedure PanelAllClick(Sender: TObject);
private
procedure ShowTreeControls(AControl: TWinControl; Node: TTreeNode);
procedure FindNode(ATree: TTreeView; const AText: string); overload;
function FindNode(ANode: TTreeNode; const AText: string): Boolean; overload;
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FindNode(ATree: TTreeView; const AText: string);
var
Node: TTreeNode;
begin
Node := ATree.Items.GetFirstNode();
while Assigned(Node) do
begin
if FindNode(Node, AText) then
Exit;
Node := Node.getNextSibling();
end;
end;
function TForm1.FindNode(ANode: TTreeNode; const AText: string): Boolean;
begin
Result := ANode.Text.Contains(AText);
if Result then
begin
ANode.MakeVisible();
ANode.Selected := True;
end
else
begin
ANode := ANode.getFirstChild();
while Assigned(ANode) do
begin
if FindNode(ANode, AText) then
Exit;
ANode := ANode.getNextSibling();
end;
end;
end;
procedure TForm1.PanelAllClick(Sender: TObject);
begin
FindNode(TreeView1, TControl(Sender).Name);
end;
procedure TForm1.ShowTreeControls(AControl: TWinControl; Node: TTreeNode);
var
I: Integer;
ChildNode: TTreeNode;
begin
For I := 0 to AControl.ControlCount - 1 do
begin
ChildNode := TTreeView(Node.TreeView).Items.AddChild(Node, Format('%s: %s - Parent Node %d', [AControl.Controls[I].Name, AControl.Controls[I].ClassName, Node.AbsoluteIndex]));
if AControl.Controls[I] is TWinControl then
ShowTreeControls(AControl.Controls[I] as TWinControl, ChildNode);
end;
end;
procedure TForm1.TreeView1DblClick(Sender: TObject);
begin
ShowTreeControls(Self, TreeView1.Items.Add(nil, Self.ClassName));
end;
end. |
Partager