AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

virtuelles TListView und Spaltenbreiten

Ein Thema von Marco Steinebach · begonnen am 7. Feb 2021 · letzter Beitrag vom 15. Feb 2021
Antwort Antwort
Marco Steinebach

Registriert seit: 4. Aug 2006
503 Beiträge
 
Delphi 5 Enterprise
 
#1

AW: virtuelles TListView und Spaltenbreiten

  Alt 9. Feb 2021, 18:21
Huhu Fritzew und alle anderen,
Erstmal Danke für den Tipp. Ich wäre nie drauf gekommen, einfach einen Wert dazuzuzählen, aber das funktioniert schonmal.
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:
// Fuelle das Item mit den entsprechenden Werten
// prüfe, ob alle Spalten breit genug sind, wenn nicht, mach sie breiter.
Ich hab das zwar versucht, dass funzt aber bei mir nicht - wie in Post1 geschrieben.

Hat jemand noch 'ne Idee?
Herzliche Grüße
Marco
p.s.: herzliche Grüße zurück an Werner
Marco Steinebach
  Mit Zitat antworten Zitat
Fritzew

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

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
Marco Steinebach

Registriert seit: 4. Aug 2006
503 Beiträge
 
Delphi 5 Enterprise
 
#3

AW: virtuelles TListView und Spaltenbreiten

  Alt 15. Feb 2021, 06:07
Hallo Fritz,
Ähm, nein, , da hast du recht, das taugt nicht wirklich was, die Paint-Message zu überschreiben. Aber mein Gedanken-Ansatz war sowieso Murks, ich muss ja, beim Befüllen der Items, die Liste sowieso einmal durchlaufen, da kann ich auch gleich da die maximalen Spaltenbreiten berechnen.

Herzlich grüßt
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz