unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, VirtualTrees;
type
TOAutos =
class(TObject)
public
MarkenName:
string;
Modell:
string;
Farbe:
string;
end;
TOAutoMarken =
class(TOAutos)
public
end;
TForm1 =
class(TForm)
vst: TVirtualStringTree;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure vstFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
procedure vstGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType;
var CellText: WideString);
procedure FormCreate(Sender: TObject);
procedure vstDblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
daten : TOAutos;
gruppe : TOAutoMarken;
node: PVirtualNode;
begin
gruppe := TOAutoMarken.Create;
gruppe.MarkenName := '
VW';
node:=vst.AddChild(
nil, gruppe);
daten := TOAutos.Create;
with daten
do
begin
// MarkenName := 'VW';
Modell := '
Käfer';
Farbe := '
schwarz';
end;
vst.AddChild(node, daten);
daten := TOAutos.Create;
with daten
do
begin
// MarkenName := 'VW';
Modell := '
Golf';
Farbe := '
rot';
end;
vst.AddChild(node, daten);
daten := TOAutos.Create;
with daten
do
begin
// MarkenName := 'VW';
Modell := '
Polo';
Farbe := '
grün';
end;
vst.AddChild(node, daten);
gruppe := TOAutoMarken.Create;
gruppe.MarkenName := '
Ford';
node:=vst.AddChild(
nil, gruppe);
daten := TOAutos.Create;
with daten
do
begin
MarkenName := '
Ford';
Modell := '
Cabri';
Farbe := '
orange';
end;
vst.AddChild(node, daten);
daten := TOAutos.Create;
with daten
do
begin
MarkenName := '
Ford';
Modell := '
Taunus';
Farbe := '
grau';
end;
vst.AddChild(node, daten);
daten := TOAutos.Create;
with daten
do
begin
MarkenName := '
Ford';
Modell := '
Fiesta';
Farbe := '
pink';
end;
vst.AddChild(node, daten);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
vst.NodeDataSize:=sizeof(TOAutos);
end;
procedure TForm1.vstDblClick(Sender: TObject);
var
FocusedNode : PVirtualNode;
daten : TOAutos;
begin
FocusedNode := vst.FocusedNode;
if FocusedNode <>
nil then
begin
daten := TOAutos(vst.GetNodeData(FocusedNode)^);
if daten.Modell<> '
'
then
begin
showmessage('
Sie haben die Marke: ' + daten.MarkenName +
'
Modell: ' + daten.Modell +
'
mit der Farbe ' + daten.Farbe +
'
gewählt.');
end;
end
else
begin
ShowMessage('
Bitte vorher einen Eintrag auswählen.');
end;
end;
procedure TForm1.vstFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
daten : TOAutos;
begin
daten:=TOAutos(vst.GetNodeData(node)^);
daten.free;
end;
procedure TForm1.vstGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType;
var CellText: WideString);
var
daten: TOAutos;
begin
daten := TOAutos(vst.GetNodeData(node)^);
case Column
of
0: celltext:=daten.MarkenName;
1: celltext:=daten.Modell;
2: celltext:=daten.Farbe;
end;
end;
end.