Dennoch würde ich im NodeDataRecord nicht das eigentliche Bitmap speichern, sondern eine Id auf eine Liste bzw. auf die entsprechenden der
DB-Bildtabelle.
Da ich auch sehr viel mit Images und dem VTV arbeite, würde ich es ebenfalls so machen wenn mir eine ImageList nicht ausreichen würde. Der Vorteil ist nicht nur der Speicher, der pro Bild nur einmal belegt wird und nicht mehrfach pro Node, sondern sobald du die Liste mit den Bilder aktualisierst bzw. ein Bild austauschst, musst du nur den VTV mit
VTV.Invalidate
bzw.
VTV.InvalidateNode(ANode)
neu zeichnen lassen und die Bilder sind direkt auf dem neuen Stand.
Zitat von
Wishmaster:
ganz vergessen zu sagen, ich benutze eine leere TImageList um den text nach rechts zu bewegen
Diesen Umweg würde ich nicht gehen, sondern ich würde im PainText Event des VTV den Text manuell um die Breite des betreffenden Images bewegen. Die Breite wird wohl immer gleich sein bzw. die könntest du auch dann aus der entsprechenden Liste auslesen. Für die Liste würde sich vielleicht dann schon eine eigene Klasse anbieten, in der noch zusätzliche Informationen zum Bild abgelegt werden können wie eben z.B. die Breite und die Höhe des Bildes.
Dann kannst du ganz einfach im PaintText Event per Index auf die Liste der Bilder zugreifen und dann um die Breite des Bildes verschieben.
Das mal so aus meiner Sicht. Vielleicht hilft es dir ja weiter.