[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?
Klick in einen leeren Bereich einer ListView
-
- Beiträge: 143
- Registriert: Mo 30. Mär 2020, 12:37
Klick in einen leeren Bereich einer ListView
Zuletzt geändert von Joachim Raap am Mi 20. Mai 2020, 12:57, insgesamt 1-mal geändert.
Re: Klick in einen leeren Bereich einer ListView
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).
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).
-
- Beiträge: 143
- Registriert: Mo 30. Mär 2020, 12:37
Re: Klick in einen leeren Bereich einer ListView
Hallo wp_xyz; werde ich mal nacharbeiten (bin Anfänger
) und probieren.
Aber vielen Dank!

Aber vielen Dank!
-
- Beiträge: 143
- Registriert: Mo 30. Mär 2020, 12:37
Re: Klick in einen leeren Bereich einer ListView
Super wp_xyz; habe ich verstanden und funktioniert auch bei mir
Danke

Danke
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- 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
VirtualTreeView.TreeOptions.SelectionOptions.toExtendedFocuswp_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).
vermutlich