Einzelnen Beitrag anzeigen

MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Probleme mit dem ListView

  Alt 26. Mai 2018, 16:35
Hallo,

ich zeichne bei meinem ListView die Einträge selbst (OnCustomDrawItem). Nutze es im "vsList" Modus.
Für meinem Zweck stelle ich mir die Breite für die Einträge entsprechend ein und schalte das HotTracking aus.

SetWindowTheme(Listview.Handle, '', nil);
ListView_SetColumnWidth(Listview.Handle,0,500);

Mit SetWindowTheme schalte ich das HotTracking aus, denn die Eigenschaft "HotTrack" auf "False" zu setzen, hilft nicht. Mit "ListView_SetColumnWidth" stelle ich mir die Breite für den Inhalt ein.
Das Problem ist jedoch, wenn ich in der Laufzeit die Anzeigeneinstellung von Windows 10 ändere (also die Schriftgröße ändere), dass meine ListView das HotTracking wieder anschaltet und die Breite ebenfalls wieder auf Standard (hier wohl AutoSize) gesetzt wird. Also überlegte ich mir, dass ich die "WM_DPICHANGED" abfange und die beiden Befehle einfach wieder ausführe. Aber das geht dort nicht. Die beiden Befehle in einem Button.OnClick auszuführen, funktioniert aber problemlos. Irgendwie scheint "WM_DPICHANGED" zu früh zu sein.

Hat jemand vielleicht eine Idee, wie man die o.g. Befehle so anwendet, dass diese auch immer funktionieren?

Gruß Michael
  Mit Zitat antworten Zitat