Einzelnen Beitrag anzeigen

martinf16

Registriert seit: 26. Aug 2007
99 Beiträge
 
Turbo Delphi für Win32
 
#1

Listview: Markierte Einträge auslesen ohne Schleife

  Alt 10. Apr 2009, 20:42
Hallo,

um in einer Listview alle markierten Einträge herauszufinden, würde man normalerweise eine Schleife nehmen. Also etwa so:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  with listview do
  for i := 0 to Items.Count - 1 do
      if Items[i].Selected then [was auch immer]
end;
Das funktioniert bei 10 Einträgen gut, meinetwegen auch bei 1000. Allerdings habe ich in meiner Listview 200000 Einträge, was entsprechend lange dauert wenn alle durchsucht werden müssen. Darum stellt sich natürlich die Frage, ob es eine bessere Möglichkeit gibt um an die Einträge zu kommen.

Meine erste Idee war vielleicht direkt beim markieren eines Eintrags diesen in einem Array oder was auch immer zu speichern, dass dann hinterher nur noch der Array mit allen markierten Einträgen ausgelesen werden muss. Allerdings müsste man hier beachten dass ja nicht nur per Maus sondern auch per Tastatur markiert werden kann und wo man diese Abfrage abfangen könnte ohne auf die Performance zu drücken.

Vielleicht gibts aber auch eine super einfache Lösung, vielleicht verfügt die ListView schon über einen Array oder etwas ähnliches, den man nur anzapfen muss. Schließlich müssen die markierten Einträge ja auch irgendwo gespeichert sein und es dauert auch nicht ewig bis diese dargestellt sind.

Kennt da jemand eine Lösung???

Vielen Dank schon mal! Wenn ich was finde poste ich es auch sofort, bei Google und hier im Forum stoße ich nur auf die einfache Lösung wie oben.
  Mit Zitat antworten Zitat