Sichtbare Zeilen in ListView

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Sichtbare Zeilen in ListView

Beitrag von Ally »

Hallo,

wie kann man herausfinden wie viele Zeilen in einem ListView gerade angezeigt werden bzw. angezeigt werden könnten?

Gruß Roland

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Sichtbare Zeilen in ListView

Beitrag von theo »

Wenn alle gleich hoch sind, z.B. so

Code: Alles auswählen

var
  Arect: TRect;
  Lines:integer;
begin
Arect:=ListView1.Items[0].DisplayRect(drBounds);
Lines:=ListView1.ClientHeight div (Arect.Bottom-Arect.Top);  

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Sichtbare Zeilen in ListView

Beitrag von Ally »

Hallo theo,

vielen Dank für diene Antwort.

Ich habe heute Morgen eine Stunde lang rumgegooglet und Nix gefunden. :(
Gerade habe ich es noch mal probiert und bin sofort fündig geworden. :)

So geht's ganz einfach:

Code: Alles auswählen

Zeilen := ListView.VisibleRowCount;
Gruß Roland

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Sichtbare Zeilen in ListView

Beitrag von theo »

Ja, stimmt. Das hatte ich auch nicht mehr auf dem Radar.
Das Resultat ist aber leicht anders.
Bei meiner Methode sind nur die vollständig sichtbaren Zeilen berücksichtigt.
Bei VisibleRowCount werden auch "Angeschnittene" mit einbezogen.
Kommt halt drauf an, was man braucht.

In diesem Beispiel auf GTK2, zeigt VisibleRowCount 6 an, weil ein kleiner Teil vom Grau der 6.ten Zeile noch sichtbar ist.
Meine Funktion zeigt nur 5 an.
Dateianhänge
LVRows.png
LVRows.png (9.23 KiB) 928 mal betrachtet

Antworten