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.