Hello,
the "break" is inside the inner loop, so it breaks the "X" loop, while the "Y" loop will continue.
You could write (but there are several other options):
var found_flag:boolean;
found_flag := false;
for Y := 0 to Image.Height-1 do
begin
for X := 0 to Image.Width-1 do
begin
if Image.Pixels_ie1g[X,Y] <> true then
begin
found_flag := true;
break;
end;
end;
if found_flag then
break;
end;