本例效果圖:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Grids;
type
TForm1 = class(TForm)
TreeView1: TTreeVIEw;
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure TreeVIEw1Change(Sender: TObject; Node: TTreeNode);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
Nodes: TTreeNodes;
node: TTreeNode;
begin
{初始化 TreeVIEw1}
TreeVIEw1.Align := alLeft;
Nodes := TreeVIEw1.Items;
node := Nodes.Add(nil, '一連長');
node := Nodes.AddChild(node, '一排長');
node := Nodes.AddChild(node, '一班長');
node := Nodes.AddChild(node, '戰士1');
Nodes.Add(node, '戰士2');
Nodes.Add(node, '戰士3');
Nodes.Add(node, '戰士4');
node := node.Parent;
Nodes.Add(node, '二班長');
Nodes.Add(node, '三班長');
node := node.Parent;
Nodes.Add(node, '二排長');
Nodes.Add(node, '三排長');
node := node.Parent;
Nodes.Add(node, '二連長');
Nodes.Add(node, '三連長');
{初始化 StringGrid1}
with StringGrid1 do begin
Align := alClIEnt;
FixedRows := 0;
ColCount := 2;
ColWidths[0] := 78;
ColWidths[1] := 50;
DefaultRowHeight := 18;
RowCount := 15;
Cells[0,0] := '當前選擇';
Cells[0,1] := '序號';
Cells[0,2] := '所在級別';
Cells[0,3] := '在兄弟中排行';
Cells[0,4] := '下級總數';
Cells[0,5] := '上級元素';
Cells[0,6] := '上一個';
Cells[0,7] := '下一個';
Cells[0,8] := '上一個兄弟';
Cells[0,9] := '下一個兄弟';
Cells[0,10] := '上一個可見';
Cells[0,11] := '下一個可見';
Cells[0,12] := '第一個下級';
Cells[0,13] := '最後一個下級';
Cells[0,14] := '總數';
end;
end;
procedure TForm1.TreeVIEw1Change(Sender: TObject; Node: TTreeNode);
begin
with StringGrid1 do begin
{清除第二列的數據}
StringGrid1.Cols[1].Clear;
{當前選擇}
Cells[1,0] := Node.Text;
{序號; AbsoluteIndex 是絕對序號}
Cells[1,1] := IntToStr(Node.AbsoluteIndex);
{所在級別}
Cells[1,2] := IntToStr(Node.Level);
{在兄弟中排行}
Cells[1,3] := IntToStr(Node.Index);
{下級總數}
Cells[1,4] := IntToStr(Node.Count);
{上級元素}
if Boolean(Node.Parent) then Cells[1,5] := Node.Parent.Text;
{上一個}
if Boolean(Node.GetPrev) then Cells[1,6] := Node.GetPrev.Text;
{下一個}
if Boolean(Node.GetNext) then Cells[1,7] := Node.GetNext.Text;
{上一個兄弟}
if Boolean(Node.getPrevSibling) then Cells[1,8] := Node.getPrevSibling.Text;
{下一個兄弟}
if Boolean(Node.getNextSibling) then Cells[1,9] := Node.getNextSibling.Text;
{上一個可見}
if Boolean(Node.GetPrevVisible) then Cells[1,10] := Node.GetPrevVisible.Text;
{下一個可見}
if Boolean(Node.GetNextVisible) then Cells[1,11] := Node.GetNextVisible.Text;
{第一個下級}
if Node.HasChildren then Cells[1,12] := Node.getFirstChild.Text;
{最後一個下級}
if Node.HasChildren then Cells[1,13] := Node.GetLastChild.Text;
{總數}
Cells[1,14] := IntToStr(Node.Owner.Count);
end;
end;
end.