In deinem VirtualStringTree existiet nur eine Spalte. Benötigt man verschiedene Ausrichtungen, verwendet man entsprechend mehr Spalten. Für dich würde eine zusätzliche Spalte genügen. Zusätzlich solltest du dir einen NodeData-Typen deklarieren:
Delphi-Quellcode:
TYPE
PNodeData = ^TNodeData;
TNodeData = Record
Titel : String[100];
Id : Integer;
End;
CONST
SizeNodeData = SizeOf(TNodeData);
Bei der Zuweisung der Node-Daten weist du dem Titel das zu, was bei dir vordem
Data.Entry.Caption hieß, der Id die erzeugte Id. Bei mir (ich lese Branchen und Zusatzinfos aus einer Tabelle ein) sieht das so aus:
Delphi-Quellcode:
...
BranchenStart := Sender.AddChild(Sender.RootNode);
vData := Sender.GetNodeData(BranchenStart);
vData.Id := Id;
vData.Titel := STR_200(Titel);
Qset_Branchen.Next;
...
In der GetText-Procedure fragst du dann nicht nach dem Level, sondern nach der Spalte:
Delphi-Quellcode:
procedure TFormMain.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: string);
Var
vData : PNodeData;
begin
vData := Sender.GetNodeData(Node);
Case Column Of
0 : CellText := String(vData.Titel);
1 : CellText := String(vData.Id);
End;
end;
Die Ausrichtung der jeweiligen Spalten nimmst du im ObjectInspector vor.
Ungetestet, da aus einem meiner Projekte herauskopiert ...