Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi listview selected schleife? (https://www.delphipraxis.net/51129-listview-selected-schleife.html)

jolomino 6. Aug 2005 16:43


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:
if (ListView.Selected <> nil) then
  begin
//blablabla
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 :-(

Delphi-Quellcode:
for i := 0 to ListView.SelCount -1 do // Alle Einträge durchlaufen
    begin
   if (ListView.Selected <> nil) then
  begin
  //mach was
problem ist, nach einer weile wird der erste markierte eintrag bearbeitet, danach ist aber schluss. kann mir einer mal meine denkblokade nehmen :-)

gruss jolomino

ps: upss, habe mich im forum versehen, kann es mal jemand verschieben?

Matze 6. Aug 2005 16:46

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

jolomino 6. Aug 2005 17:04

Re: listview selected schleife?
 
Zitat:

Zitat von Matze
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

erstmal thx für den denkanstoss, aber leider ist das resultat das gleiche. ich könnt aus dem fenster springen :-(
so funktioniert nicht einmal ein einzelner markierter eintrag

gruss jolomino

marabu 6. Aug 2005 17:23

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:
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;
Grüße vom marabu

jolomino 6. Aug 2005 17:44

Re: listview selected schleife?
 
Delphi-Quellcode:
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;
[/quote]

erstmal thx, aber was meinst du mit processitem und das dieses meine routine wäre? sorry das ich so ein noob bin :-(

gruss jolomino

marabu 6. Aug 2005 17:55

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

jolomino 6. Aug 2005 17:58

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

jolomino 6. Aug 2005 20:30

Re: listview selected schleife?
 
boah, das thema lässt mir keine ruhe :-(

benutze ja nun folgendes, erstmal thx nochmal :-)

Delphi-Quellcode:
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;
nun habe ich aber folgendes problem:
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

marabu 6. Aug 2005 20:44

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

jolomino 6. Aug 2005 20:55

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.
Seite 1 von 3  1 23      

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