das beforeitemErase ist denke ich besser für deine zwecke was die farbe betrifft.
du kannst die tiefe eines knoten mit
tiefe:=vst.GetNodeLevel(node);
abfragen um dann die nicht anderes zu malenden knoten zu überspringen.
Delphi-Quellcode:
procedure TForm1.VirtualStringTree1BeforeItemErase(
Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode;
ItemRect: TRect; var ItemColor: TColor;
var EraseAction: TItemEraseAction);
begin
if sender.AbsoluteIndex(node) mod 2=0 then
ItemColor:=$123344;
EraseAction:=eaColor;
end;
die fontsize änderst du am besten im on painttext.
Delphi-Quellcode:
procedure TForm1.VirtualStringTree1PaintText(Sender: TBaseVirtualTree;
const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
TextType: TVSTTextType);
begin
if sender.AbsoluteIndex(node) mod 2=0 then
TargetCanvas.Font.Size:=24;
end;