Ich würde Case satt der verschachtelten Ifs nehmen.
Delphi-Quellcode:
var
Form1: TForm1;
status:integer;
i:integer;
implementation
{$R *.dfm}
procedure TForm1.B1Click(Sender: TObject);
begin
case status of
0:
begin
sleep ( 500); //Halbe Sekunde
image2.visible:=true;
//if image2.Visible then -> überflüssig, weil du dies ja gerde explizit gemacht hast
image1.visible:=false;
status:=1;
end;
2:
begin
sleep(500);
image2.visible:=false:
status:=2;
end;
...
end;
end;
end.