Einzelnen Beitrag anzeigen

Incocnito

Registriert seit: 28. Nov 2016
210 Beiträge
 
#2

AW: FMX Listview Einträge durchgehen

  Alt 9. Aug 2019, 07:46
Hi Jacky,

vielleicht macht Delphi intern davon
Delphi-Quellcode:
for iPos := 0 to (LVEinkauf.Items.Count - 1) do
Begin
  Item := LVEinkauf.Items[iPos];
  if Item.Objects.FindObjectT<TListItemImage>('LineImage').Visible{ = true} then
  Begin
    LVEinkauf.Items.Delete(Item.Index);
  End;
End;

Dann würde er beispielsweise den 3 löschen, alle würden aufrücken (der 4te wird der 3te usw.)
und im nächsten Durchlauf würde er den 5ten nehmen, da dieser an der Position ist
wo zuvor der 4te war und somit den 4ten, der auf die gelöschte 3te Position gerutscht ist,
nicht mehr prüfen.
Wundert mich aber, dass Delphi so läuft.
Notfalls probier es von Hand, indem du die Schleife umdrehst:
Delphi-Quellcode:
for iPos := (LVEinkauf.Items.Count - 1) downto 0 do
Begin
  Item := LVEinkauf.Items[iPos];
  if (Item.Objects.FindObjectT<TListItemImage>('LineImage').Visible) then
  Begin
    LVEinkauf.Items.Delete(Item.Index);
  End;
End;

Das "if X = True then" kannst du dir übrigens sparen und direkt "if X then" schreiben.
Ist aber natürlich (wie so oft) Geschmackssache.

Liebe Grüße
Incocnito
  Mit Zitat antworten Zitat