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