Lo lógico de un bucle es recorrerlo de menor a mayor, pero cuando tenermos que recorrer una lista en la que se van a borrar (parcial o totalmente) lo que se debe hacer es recorrer me mayor a menor.
procedure borramsgs;
var
i: integer;
begin
for i:=Form1.list2.Items.Count-1 downto 0 do
if Form1.list2.Items[i].Checked then
Form1.list2.Items[i].Delete;
end;
|