Oder man macht es wie im oberen Beispiel mit den Strings und packt einen Record um das Array. Dann muss man aber auch im OnFreeNode das Array wieder auf nil setzen.
Delphi-Quellcode:
type
TsqlData =
record
Data:
array of string;
end;
PsqlData = ^TsqlData;
procedure ...GetNodeDataSize(Sender: TBaseVirtualTree;
var NodeDataSize: Integer);
begin
{ Alle Nodes haben dieselbe DataSize! Aber nicht alle Nodes müssen zwingend dieselbe Array-Länge haben. }
NodeDataSize := SizeOf(TsqlData);
end;
procedure ...FreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
sqlData:PsqlData;
begin
sqlData := Sender.GetNodeData(node);
sqlData.Data :=
nil;
end;
function Query(
Query:
string):integer;
var
row,col:integer;
node:PVirtualNode;
sqlData:PsqlData;
begin
FMySQL.Query(
Query);
//SQLColCount ist 11
for col := 0
to FMySQL.SQLColCount - 1
do begin
FVST.Header.Columns.Add;
end;
FVST.BeginUpdate;
try
node := FVST.AddChild(
nil);
sqlData := FVST.GetNodeData(node);
SetLength(sqlData.Data,FMySQL.SQLColCount);
//SQLColCount ist 11
sqlData[0] := '
Test';
finally
FVST.EndUpdate;
end;
Result := FMySQL.SQLRowCount;
end;