Nein, es ist noch 2006 und der VirtualStringTree ist in der Version 5.3.0 und hier die angesprochenen Teile vom code:
Delphi-Quellcode:
// Artikel-TecDoc-Fahrzeug-Baum
type
PArtikelTecDocrec = ^TArtikelTecDocrec;
TArtikelTecDocrec = record
level:Byte;
HerNr:Integer;
artikel_id: Integer;
kTypNr: Integer;
kModNr:Integer;
hersteller:String;
statTyp:String;
bjvon:String;
bjbis:String;
bezeichnung_vehicle:String;
bezeichnung_vehicletype:String;
kw:Integer;
lit:Integer;
zylinder:Byte;
end;
function AddVSTStructure(AVST: TCustomVirtualStringTree; ANode: PVirtualNode;
ARecord: TArtikelTecDocrec): PVirtualNode;
var
Data: PArtikelTecDocrec;
level: Integer;
begin
Result := AVST.AddChild(ANode);
Data := AVST.GetNodeData(Result);
if Level = 0 then
Result.CheckType := ctNone;
Avst.ValidateNode(Result, False);
If arecord.Level = 2 Then ANode.CheckType := ctCheckBox;
Data^.level := Arecord.level;
Data^.HerNr := Arecord.HerNr;
Data^.artikel_id := Arecord.artikel_id;
Data^.kTypNr := Arecord.kTypNr;
Data^.kModNr := Arecord.kModNr;
Data^.hersteller := Arecord.hersteller;
Data^.statTyp := Arecord.statTyp;
Data^.bjvon := Arecord.bjvon;
Data^.bjbis := Arecord.bjbis;
Data^.bezeichnung_vehicle := Arecord.bezeichnung_vehicle;
Data^.bezeichnung_vehicletype := Arecord.bezeichnung_vehicletype;
Data^.kw := Arecord.kw;
Data^.lit := Arecord.lit;
Data^.zylinder := Arecord.zylinder;
end;
function FindNodebyherNr(aTree: TBaseVirtualTree; aherNr: Integer): PVirtualNode;
var
NodeData: PArtikelTecDocrec;
begin
Result := aTree.GetFirst;
while Assigned(Result) do
begin
NodeData := (aTree.GetNodeData(Result));
if (NodeData.HerNr = aherNr) then
Exit;
Result := aTree.GetNext(Result);
end;
end;
function FindNodebyModNr(aTree: TBaseVirtualTree; aModNr, aherNr: Integer): PVirtualNode;
var
NodeData: PArtikelTecDocrec;
begin
Result := aTree.GetFirst;
while Assigned(Result) do
begin
NodeData := (aTree.GetNodeData(Result));
if (NodeData.HerNr = aherNr) AND (NodeData.kModNr = aModNr) then
Exit;
Result := aTree.GetNext(Result);
end;
end;