![]() |
listview selected schleife?
hi,
hab mal wieder ein problem. wahrscheinlich ist es überhaupt keines, sonder ich glotze nur schon zu langre drauf :-) also, ich habe ein listview gefüllt mit daten. wenn ich nun mit einer zeile etwas machen möchte, benutze ich folgenden befehl
Delphi-Quellcode:
nun möchte ich aber per multiselect, das alle markierten einträge bearbeitet werden, sprich er soll oben anfangen und nach unten hin alle selektierten bearbeiten. da ich aber listviewselected benutze, funzt es nicht. ich dachte ich würde mit folgendem code klar kommen, aber dem ist nicht so :-(
if (ListView.Selected <> nil) then
begin //blablabla
Delphi-Quellcode:
problem ist, nach einer weile wird der erste markierte eintrag bearbeitet, danach ist aber schluss. kann mir einer mal meine denkblokade nehmen :-)
for i := 0 to ListView.SelCount -1 do // Alle Einträge durchlaufen
begin if (ListView.Selected <> nil) then begin //mach was gruss jolomino ps: upss, habe mich im forum versehen, kann es mal jemand verschieben? |
Re: listview selected schleife?
Ich habe es njetzt nicht gestestet, ob es geht, aber wenn, dann würde ich es so aufrufen:
Delphi-Quellcode:
if ListView1.Items[i].Selected then
|
Re: listview selected schleife?
Zitat:
so funktioniert nicht einmal ein einzelner markierter eintrag gruss jolomino |
Re: listview selected schleife?
Hallo jolomino,
der Hinweis von Matthias war schon in Ordnung, aber es gibt mehrere Vorgehensweisen um alle markierten Items einer ListView zu bearbeiten:
Delphi-Quellcode:
Grüße vom marabu
with ListView do
while Assigned(Selected) do begin ProcessItem(Selected); // das ist deine Routine Selected.Selected := false; // muss sein bei dieser Vorgehensweise end; with ListView do for i := Items.Count - 1 downto 0 do if Items[i].Selected then begin ProcessItem(Items[i]); Selected.Selected := false; // nur wenn du die Markierung aufheben willst end; |
Re: listview selected schleife?
Delphi-Quellcode:
[/quote]
with ListView do
while Assigned(Selected) do begin ProcessItem(Selected); // das ist deine Routine <---- das verstehe ich noch nicht so ganz Selected.Selected := false; // muss sein bei dieser Vorgehensweise end; erstmal thx, aber was meinst du mit processitem und das dieses meine routine wäre? sorry das ich so ein noob bin :-( gruss jolomino |
Re: listview selected schleife?
Na ja, du wirst doch irgendetwas mit dem markierten ListItem machen wollen? Ich hielt es für keine schlechte Idee das in einer Prozedur ProcessItem() zu tun, weil dann deine Schleifenkonstruktion besser zu lesen ist, als wenn du 42 Statements mit in die Schleife zwängst.
marabu |
Re: listview selected schleife?
jou danke, bin auch gerade drauf gekommen, habe nur zu voreilig gepostet....naja, nach so vielen stunden vorm pc, ist es ja kein wunder das die birne weich wird :-)
danke leute für eure unterstützung gruss jolomino |
Re: listview selected schleife?
boah, das thema lässt mir keine ruhe :-(
benutze ja nun folgendes, erstmal thx nochmal :-)
Delphi-Quellcode:
nun habe ich aber folgendes problem:
listview.SelectAll;
with ListView do while Assigned(Selected) do begin MultiPart.Start(GetSelectedFile(), True); // das ist deine Routine Selected.Selected := false; // muss sein bei dieser Vorgehensweise UpdateControls(); end; wenn ich nun alle markiere, dauerts ewig und 3 tage bis sich mal am anfang etwas tut. dabei findet mit "MultiPart.Start(GetSelectedFile(), True);" sofort ein aufruf statt, der vorher immer sofort bearbeitet wurde. wie kann ich denn dieses nun umgehen? wenn es keine lösung gibt, kann man dann immer 5 markieren vom listview und wenn einer davon fertig ist wieder einen dazu? gruss jolomino |
Re: listview selected schleife?
Verstehe ich dich richtig, SelectAll() dauert ewig? Vielleicht wird irgendein Ereigniscode (OnSelectItem?) abgearbeitet? Wenn du alle ListItems bearbeiten willst, warum markierst du sie dann vorher? Solange du noch nicht alle markierten ListItems bearbeitest, solltest du auf die Aktualisierung der ListView verzichten. Wenn du sehr viele ListItems markierst, dann solltest du eine Fortschrittsanzeige einbauen.
marabu |
Re: listview selected schleife?
du hast natürlich recht :-)
aber das selectall() dauert nicht lange, nur die anzeige das etwas im MultiPart.Start(GetSelectedFile(), True); passiert. deswegen war meine überlegung, 5 einträge selecten und wenn einer fertig ist, wieder einen dazu selecten, damit immer 5 einträge beaarbeitet werden. aber das bringt ja wohl auch nichts, da das ja das gleiche in grün ist :-( ob ich nun erst 5 und dann immer welche drauf selecte oder gleich all, das bleibt sich gleich...oder etwa nicht ? gruss jolomino |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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 by Thomas Breitkreuz