Vale ya veo el problema que tienes. Si lo que quieres es utilizar el form2 como fondo e inicias el form3 en el ONSHOW del form2, el form2 no se te muestra hasta después de finalizar el form3, y por eso estas utilizando el ONACTIVATE... pero es que así entras en bucle o corres el riesgo de hacer operaciones en el form2 estando ya en modo de cierre o inactivo.
Prueba lo siguiente, inserta en el form2 un TTimer con la propiedad enabled desabilitada y utiliza el siguiente código en UNIT2:
Código Delphi
[-]
procedure TForm2.FormShow(Sender: TObject);
begin
Timer1.Interval := 300;
Timer1.Enabled := True;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;
Form3.showModal;
Close;
end;