Project1
Код:
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.ShowMainForm:=False;
Application.CreateForm(TForm2, Form2);
Form2.Show();
Application.Run;
Unit2
Код:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.ShowMainForm := true;
Form1.Show;
Application.Minimize;
end;
Поменял местами пару строк в Unit2. Все работает на ура. Никаких мерцаний и перепрыгиваний форм не наблюдал при десятке опытов

Проверил на Delphi6 ибо другого нема.