Da - wie bereits erwähnt - während der Header Customdraw-Benachrichtigungen nie der status CDIS_HOT übermittelt wird habe ich als workaround die LV-Methode __IsItemHot (dwItem) erstellt. Wie der Name andeutet gibt die Methode nur dann .t. zurück wenn sich die - nicht gedrückte - Maus über einem bestimmten item befindet. Der "Hot" Status eines item wird dargestellt indem die Hintergrundfarbe etwas aufgehellt wird.
Wird im Dialog die neue CheckBox "Mimic Default HeaderBackgroundDrawing" selektiert, wird auch der Hintergrund der registrierten Items genau so gezeichnet wie das System das tun würde. Gesteuert wird das ganze in der LV-Dispatch() mit Hilfe der protect var _lMimicHeaderDefaultBackgroundDrawing.
Zudem kann man nun auch:
1. Dem Header einen Font zuweisen - via Property HeaderFont
2. Die Höhe des Header festlegen - via Property HeaderHeight
Um die Höhe des Headers zu ändern ist ein subclassing des Header notwendig. In der WinProc wird dann die HDM_LAYOUT message ausgewertet.
Im angehängten Image ist zu sehen, dass der item "Erstellt am:" mit einem anderen Font als die restlichen Items gezeichnet wird. Der Font für den "Erstellt am:" item wird während dem customdraw - siehe LV-Dispatch() - eingesetzt.
P.S. Für den Franz habe ich noch die beiden letzten Checkboxen hinzugefügt
to be continued ...
Karl-Heinz
ListView Spaltenüberschrift färben
Moderator: wriedmann
-
- Posts: 774
- Joined: Wed May 17, 2017 8:50 am
- Location: Germany
ListView Spaltenüberschrift färben
- Attachments
-
[The extension aef has been deactivated and can no longer be displayed.]
-
- LVHeader.png (24.7 KiB) Viewed 280 times