Also, falls es jemand interessiert

, hier die Antwort:
Es ist nicht mehr im Nachhinein machbar !
Um dieses trotzdem handeln zu können, muss also die Windows Message WM_MEASUREITEM abgefangen werden, die an das dem ListView übergeordneten Fenster bzw. an den Besitzer des ListView gesendet wird.
Hier muss man nun den Zeiger "lParam" mit einem Record des Typs MEASUREITEMSTRUCT "verknüpfen" und so erhält man die Parameter der Nachricht WM_MEASUREITEM.
Aus dem Record kann man nun den Typ des zu erstellenden Controls feststellen, also in diesem Fall ein ListView und man kann dann mittels der Eigenschaften "itemHeight" die Höhe der Eintragszeilen festlegen.
(Für die, die hiermit noch nicht so bewandert sind, kleine Anmerkung: Der Record wird nach Beendigung des WindowProc an den Control, hier ListView, zurückgegeben und dieses wertet dann die eingestellten Eigenschaften aus).
So kann man also dann doch die Höhe der Einträge festlegen.
Um das ganze im Nachhinein festzulegen, muss man Windows einfach vorgauckeln, dass das Control komplett neu gezeichnet werden muss und schon greift WM_MEASUREITEM.
Übrigens: Dieses Vorgehen ist dasselbe, wie wenn ein Menü von Hand per OwnerDraw ohne VCL erstellt werden soll
Mehr Infos in der WinAPI oder im Google nach "Listview Item height" suchen und den zweiten gefundenen Eintrag anzeigen
Soweit von mir von hier....
MedanoCC
P.S.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| Procedure TBESITZER.WndProc(var Message: TMessage); var ItemStruct: PMEASUREITEMSTRUCT; begin with Message do case Msg of WM_MEASUREITEM: if wParam <> 0 then begin ItemStruct:= PMEASUREITEMSTRUCT( lParam ); if ItemStruct.CtlType = 102 then //ODT_LISTVIEW { Stellt die ListViews ein } ItemStruct.itemHeight:= 18; //Höhe der Einträge end; end; Inherited WndProc(Message); end; |