Nie wspominając która wersja Delphi ...
Nowsze wersje Delphi zostały dodane dwa nowe właściwości TCustomForm: PopupMode i PopupParent. Ustawienie PopupParent okna dialogowego modalnego na formularz, który tworzy to okno dialogowe, zapewnia, że formularz podrzędny pozostaje na jego rodzica. Zwykle rozwiązuje problem, który opisujesz.
Myślę, że ta para właściwości została dodana w Delphi 2006, ale mogło to być 2005. Są zdecydowanie w Delphi 2007 i wyżej.
EDYCJA: Po zobaczeniu, że używasz Delphi 7, jedyną sugestią jaką mam, jest to, że w kodzie, który wyświetla twoją formę modalną, wyłącza się tworzenie formularza i ponownie włącza po powrocie. To powinno uniemożliwić utworzenie okna wprowadzania danych, co może pomóc w utrzymaniu porządku Z.
Coś takiego może działać (niesprawdzone, a ja już nie używam D7):
procedure TForm1.ShowForm2;
begin
Self.Enabled := False;
try
with TForm2.Create(nil) do
begin
try
if ShowModal = mrOk then
// Returned OK. Do something;
finally
Free;
end;
end;
finally
Self.Enabled := True;
end;
end;
Jeśli Form2 tworzy okno modalne (jak już wspomniano), po prostu powtórzyć proces - wyłączyć Form2 , utwórz Form3 i pokaż go modalnie, a następnie ponownie włącz Form2 po jego powrocie. Upewnij się, że użyłeś try..finally, tak jak to pokazałem, więc jeśli coś pójdzie nie tak w formie modalnej, formularz tworzenia jest zawsze ponownie włączony.
Dzięki za dodanie wersji. Pomaga, jeśli umieścisz to w tekście lub tekście twojego pytania. :-) –
Najpierw ustawiłem odpowiednią etykietę, potem dodałem EDIT :) – LukLed
Tak długo, jak gdzieś to umieścisz, działa. Nie musi koniecznie znajdować się w jednym z tagów, o ile jest w temacie lub w tekście pytania. Dzięki temu ludzie wiedzą, jaką masz funkcjonalność, gdy odpowiadają. :-) –