Klick in einen leeren Bereich einer ListView

Rund um die LCL und andere Komponenten
Antworten
Joachim Raap
Beiträge: 143
Registriert: Mo 30. Mär 2020, 12:37

Klick in einen leeren Bereich einer ListView

Beitrag von Joachim Raap »

[gelöst] Hallo,
ich habe eine ListView erzeugt die im Laufe des Programmes mit Daten gefüllt wird. Die ListView ist als "Report" eingestellt und "Readonly=true" sowie "RowSelect=true" konfiguriert.
Nun ist es so, daß die ListView nicht immer vollständig gefüllt wird (das also Leerzeilen verbleiben). Klickt nun der geneigte User in einen leeren Bereich, läuft die Anwendung auf einen Fehler (external SIGSEGV). Um das zu vermeiden suche ich eine Möglichkeit die mir im Vergleich zu "Form1.ListView1.Items.Count" zeigt, ob es ein Klick in einer Zeile >Count war.

Gibt es dazu eine Abfrage, die mir die geklickt Zeile der ListView zurückgibt?
Zuletzt geändert von Joachim Raap am Mi 20. Mai 2020, 12:57, insgesamt 1-mal geändert.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Klick in einen leeren Bereich einer ListView

Beitrag von wp_xyz »

ListView1.ItemIndex ist der Index des aktiven Items. Hat Werte zwischen 0 und ListView1.Items.Count-1. ListView1.Items[ListView1.ItemIndex] ist dann der aktive Item, also z.B. ListView1.Items[ListView1.ItemIndex].Caption der zugehörige Text in der 1. Spalte und ListView1.Items[ListView1.ItemIndex].SubItems[0] der Text in der 2. Spalte.

Aber Achtung: ItemIndex = -1 weist darauf hin, dass gerade kein Eintrag aktiv ist. Wenn du damit auf die Items der Listview zugreifst erhältst du einen Absturz.

Wenn du im nicht belegten Teil eines ListView klickst ist ListView1.ItemIndex = -1. Es ist im Report-Modus übrigens normalerweise nur dann ungleich -1, wenn du auf den Text in der 1.Spalte klickst. Um auch alle anderen Spalten klickbar zu machen, musst du RowSelect aktivieren (ich hätte gedacht, es gibt auch sowas wie ein "ExtendedSelect", das denselben Effekt hat, aber nicht die ganze Zeile markiert - aber das verwechsle ich anscheinend mit einer anderen Komponente).

Joachim Raap
Beiträge: 143
Registriert: Mo 30. Mär 2020, 12:37

Re: Klick in einen leeren Bereich einer ListView

Beitrag von Joachim Raap »

Hallo wp_xyz; werde ich mal nacharbeiten (bin Anfänger :shock: ) und probieren.
Aber vielen Dank!

Joachim Raap
Beiträge: 143
Registriert: Mo 30. Mär 2020, 12:37

Re: Klick in einen leeren Bereich einer ListView

Beitrag von Joachim Raap »

Super wp_xyz; habe ich verstanden und funktioniert auch bei mir :D
Danke

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Klick in einen leeren Bereich einer ListView

Beitrag von fliegermichl »

wp_xyz hat geschrieben:
Mi 20. Mai 2020, 10:48
(ich hätte gedacht, es gibt auch sowas wie ein "ExtendedSelect", das denselben Effekt hat, aber nicht die ganze Zeile markiert - aber das verwechsle ich anscheinend mit einer anderen Komponente).
VirtualTreeView.TreeOptions.SelectionOptions.toExtendedFocus

vermutlich

Antworten