ListView Spaltenüberschrift färben

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

Karl-Heinz
Posts: 774
Joined: Wed May 17, 2017 8:50 am
Location: Germany

ListView Spaltenüberschrift färben

Post by Karl-Heinz »

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
Attachments

[The extension aef has been deactivated and can no longer be displayed.]

LVHeader.png
LVHeader.png (24.7 KiB) Viewed 280 times
Post Reply