unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls;
type
{ TMyNode }
TMyNode = class(TTreeNode)
public
end;
{ TTreeNodeInt }
TTreeNodeInt = class(TMyNode)
public
ValueI: integer;
end;
{ TTreeNodeDbl }
TTreeNodeDbl = class(TMyNode)
public
ValueD: double;
end;
{ TTreeNodeBool }
TTreeNodeBool = class(TMyNode)
public
ValueB: boolean;
end;
{ TMyTreeView }
TMyTreeView = class(TTreeView)
public
procedure CreateMyBool(AFatherNode : TTreeNode; ABoolValue: boolean);
procedure CreateMyInt(AFatherNode : TTreeNode; AIntValue: integer);
procedure CreateMyDbl(AFatherNode : TTreeNode; ADblValue: double);
procedure Click; override;
end;
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
TV: TMyTreeView;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TMyTreeView }
procedure TMyTreeView.CreateMyBool(AFatherNode : TTreeNode; ABoolValue: boolean);
var
TmpNewMyNode : TTreeNodeBool;
begin
TmpNewMyNode:=TTreeNodeBool.Create(Items);
TmpNewMyNode.ValueB:=ABoolValue;
Items.AddNode(TmpNewMyNode, nil, BoolToStr(TmpNewMyNode.ValueB), AFatherNode, naAdd);
end;
procedure TMyTreeView.CreateMyInt(AFatherNode : TTreeNode; AIntValue: integer);
var
TmpNewMyNode : TTreeNodeInt;
begin
TmpNewMyNode:=TTreeNodeInt.Create(Items);
TmpNewMyNode.ValueI:=AIntValue;
Items.AddNode(TmpNewMyNode, nil, IntToStr(TmpNewMyNode.ValueI), AFatherNode, naAdd);
end;
procedure TMyTreeView.CreateMyDbl(AFatherNode : TTreeNode; ADblValue: double);
var
TmpNewMyNode : TTreeNodeDbl;
begin
TmpNewMyNode:=TTreeNodeDbl.Create(Items);
TmpNewMyNode.ValueD:=ADblValue;
Items.AddNode(TmpNewMyNode, nil, FloatToStr(TmpNewMyNode.ValueD), AFatherNode, naAdd);
end;
procedure TMyTreeView.Click;
var
m: String;
begin
if Selected = nil then exit;
m := '';
Showmessage(Selected.ClassName);
if Selected is TTreeNodeInt then m := 'I am an Integer = ' + TTreeNodeInt(Selected).ValueI.ToString;
if Selected is TTreeNodeDbl then m:= 'I am a Double = ' + TTreeNodeDbl(Selected).ValueD.ToString;
if Selected is TTreeNodeBool then m := 'I am a Boolean = ' + BoolToStr(TTreeNodeBool(Selected).ValueB);
if m <> '' then Showmessage(m);
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
TV := TMyTreeView.Create(Self);
TV.Parent := Self;
TV.Top := 10;
TV.Left := 10;
TV.Height := 400;
TV.Width := 300;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TV.CreateMyBool(nil, true);
TV.CreateMyInt(nil, 1);
TV.CreateMyDbl(nil, 2.1);
end;
end.