Moin Megabyte,
die Methode ShowModal zeigt das Formular an (in Deinem Falle also Form2) und wartet darauf, dass es geschlossen wird.
Folge: Form1.Hide wird erst aufgerufen, wenn Form2 wieder geschlossen wird.
Wenn Du die beiden Zeilen vertauscht klappts.
Der von d3g vorgeschlagene Weg sieht ähnlich aus:
Delphi-Quellcode:
// Mit Button1 auf Form1 wird Form2 angezeigt
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
// Wird Form2 angezeigt, dann wird Form1 ausgeblendet
procedure TForm2.FormShow(Sender: TObject);
begin
Form1.Hide;
end;
// Wird Form2 wieder geschlossen, so wird Form1 wieder angezeigt
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.Show;
end;