Das Malen der Icons ist kein Problem.
Code verkürzt. Alles Unwichtige ist raus
Delphi-Quellcode:
procedure TKSTData.VSTAfterItemPaint(Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; ItemRect: TRect);
var
R: TRect;
IconPosLeft, IconPosTop: Integer;
begin
R := ItemRect;
// IconList ist eine PNGImageList dessen Height-Eigenschaft ich auslese um zu wissen, wie hoch mein Icon ist
IconPosTop := (R.Height div 2) - (IconList.Height div 2); // Icon in der Y-Achse zentriert anordnen
IconPosLeft := R.Left + IconList.Width - 3; // Icon in der X-Achse etwas weiter links anordnen, nicht zentriert
IconList.Draw(TargetCanvas, IconPosLeft, IconPosTop, 1);
end;
Wie bewege ich den VirtualStringTree nun dazu, die Bilder in die richtige Zelle zu malen, wenn hoDrag der Header-Optionen aktiviert ist und man die Headeranordnung vertauscht?