Einzelnen Beitrag anzeigen

Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: virtuelles TListView und Spaltenbreiten

  Alt 10. Feb 2021, 08:12
Mein Problem ist: du läufst die gesamte Liste ja einmal durch, um die korrekten Spaltenbreiten zu ermitteln.
Gibt es denn nicht eine Möglichkeit, dass ganze pro Element zu machen? Hätte den Vorteil, dass man eben nicht, wie bei einer nicht-virtuellen Liste, die ganze Liste einmal durchlaufen muss. Sondern sowas wie - onData:
/)
Hallo Marco
Das Problem mit Deinem Ansatz ist, dass, das Data Event während dem PaintZyklus aufgerufen wird.
Innerhalb der PaintMessage sollte man aber nicht wirklich das Control verändern.
Das einzige was mir dazu einfällt wäre eine neue Klasse von Listview abzuleiten und da das Paint zu übeschreiben.
Mich würde es aber stören wenn sich ein View während z.B Scrollen ändert.


Aber jetz mal als Idee:

Also WM_Paint übeschreiben.
Dort ein Array mit den Columnbreiten initialisieren
jetzt inherited aufrufen

Im OnData die Breiten überprüfen und den max für die Columns in das Array schreiben.

Zurück im neuen WM_Paint eventuell die Breiten neu setzen wenn notwendig.

Gruss Fritz
Fritz Westermann
  Mit Zitat antworten Zitat