![]() |
SelectAll
Hi,
ich kämpfe mich geade durch die ListView durch. Funktioniert auch schon recht gut. Nun wollte ich folgende Funktion einbauen: Sobald man auf eine Schaltfläche klickt, sollen alle ListView-Einträge markiert werden. Die sollte mit der Prozedure SelectAll funktionieren. Wenn ich SelectAll aufrufe, passiert aber scheinbar gar nix. Es werden scheinbar keine Einträge markiert. Wenn ich in den Listview-Bereich mit der Maus hineinklicke, sieht man ganz kurz, dass alle Einträge markiert waren. Offensicht werden durch SelectAll zwar alle Einträge markiert, aber nicht angeszeigt. Auch ein Refresh bringt keine Änderung. Was muss ich machen, damit alle Markierungen auch sichtbar werden??? Gruß Thomas :roll: |
Hast du auch MultiSelect auf True gesetzt?
|
Zitat:
Thomas |
Das es nicht an MultiSelect liegt, hast du wahrscheinlich die Eigenschaft HideSelection auf False (Vorgabewert) stehen. Wenn du nun in das ListView klickst, wird die Markierung aller aufgehoben.
|
Wahrscheinlich zeigt das ListView die Selektion nur an, wenn es den Fokus hat. Da das aber nicht der Fall ist, wenn du eine andere Schaltfläche gedrückst hast, musst du nach dem Selektieren den Fokus auf das ListView setzen:
Delphi-Quellcode:
ListView.SetFocus;
|
Zitat:
Zitat:
Habt Ihr noch eine andere Idee, woran es liegen könnte?? :?: Gruß Thomas |
Da habe ich mich verschrieben:
Zitat:
Du musst also HideSelection auf False stellen. |
Zitat:
Gruß Thomas :coder: |
Hab eine Möglichkeit gefunden, wie es funktioniert: :dancer:
Code:
Jedenfalls: Danke für Eure Bemühungen und Tipps.
procedure TFormShredExplor.BitBtnMarkAllClick(Sender: TObject);
var i : Integer; begin for i := 0 to ListView.Items.Count - 1 do begin ListView.Items[i].Selected:=true; end; end; Gruß Thomas :hello: |
Wenn man begin und end schreibt, ohne es zu brauchen, wird dann ein programm eigentlich langsamer (so bei 100.000.000 mal hinternander)???
|
Moin Nailor,
nein, auf die Laufzeit hat das keinerlei Auswirkungen. Begin/end braucht nur der Compiler um den Sourcecode zu übersetzen. |
Zitat:
Es ist allerdings übersichtlicher, begin und end zu schreiben. Spätestens, wenn Du zusätzlichen Code in den Block aufnehmen musst, hast Du eine mögliche Fehlerquelle vermieden. :coder: |
Moin Thomas,
mir ist da gerade was aufgefallen: Wie hast Du denn ListView1.SetFocus und SelectAll aufgerufen? Wenn ich es so mache:
Delphi-Quellcode:
geht's bei mir nämlich (MultiSelect = true, ViewStyle = vsReport)
ListView1.SetFocus;
ListView1.SelectAll; |
Code:
Geanu, so geht es!!! :mrgreen:
ListView1.SetFocus;
ListView1.SelectAll; Hatte zuerst ListView1.SelectAll und dann erst ListView1.SetFocus in meinem Programm stehen. Lag also an der Reihenfolge. Viele Dank! Gruß Thomas :hello: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 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