Hallo Marvel,
ich habe noch nie vorher eine Listbox mit dem Style lbOwnerDrawVariable gebraucht, aber deine Frage hatte mich dazu gebracht es einmal zu versuchen. Offensichtlich geht es nicht durch simples Klicken im Object Inspector, sonst hättest du ja nicht gefragt.
Durch die Online-Hilfe war mir schnell klar, dass ich diesen speziellen Style benötige, damit das Ereignis OnMeasureItem getriggert wird. Da war schon das erste Problem. Bei meinem Delphi 7 kann man zwar den Style im
OI setzen, aber es bringt nichts. Erst durch das Setzen von Style im Ereignis OnCreate meiner DemoForm konnte ich sicher stellen, dass OnMeasureItem ausgeführt wird.
OnDrawItem ist ja einfach, also habe ich nur noch überlegt, wie ich die Höhe des Eintrags feststellen kann. Da DrawText() diese Höhe berechnet, brauchte ich nur noch ein Stück Schmierpapier (tempCanvas) um darauf vorzuschreiben. Die ermittelte Höhe übergebe ich dann an Height und intern wird das Rect ermittelt, welches an OnDrawItem() übermittelt wird - für das Schreiben in Reinschrift.
Alles klar?
Freundliche Grüße vom marabu