Vous n'avez pas mentionné quelle version de Delphi ...
Les nouvelles versions Delphi ont ajouté deux nouvelles propriétés à TCustomForm: PopupMode et PopupParent. Définir PopupParent de votre boîte de dialogue modale sur le formulaire qui crée cette boîte de dialogue s'assure que le formulaire enfant reste au-dessus de son parent. Il règle généralement le problème que vous décrivez.
Je pense que cette paire de propriétés a été ajoutée dans Delphi 2006, mais elle pourrait avoir été 2005. Ils sont définitivement là dans Delphi 2007 et plus.
EDIT: Après avoir vu que vous utilisez Delphi 7, la seule suggestion que j'ai est que, dans le code qui affiche votre formulaire modal, vous désactivez le formulaire qui le crée, et le réactiver au retour. Cela devrait empêcher la fenêtre de création de recevoir des entrées, ce qui peut aider à garder l'ordre Z correct.
Quelque chose comme cela peut fonctionner (non testé, comme je ne suis plus en utilisant 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;
Si Form2 crée une fenêtre modale (comme vous l'avez mentionné), il suffit de répéter le processus - désactiver Form2 , créez Form3 et affichez-le de manière modale, puis réactivez Form2 lorsqu'il est renvoyé. Assurez-vous d'utiliser try..finally comme je l'ai montré, de sorte que si quelque chose ne va pas dans le formulaire modal, le formulaire de création est toujours réactivé.
Merci pour l'ajout de la version. Cela aide si vous incluez cela dans le texte ou les tags de votre question quelque part. :-) –
J'ai tout d'abord réglé la balise appropriée, puis ajouté EDIT :) – LukLed
Tant que vous l'avez mis quelque part, cela fonctionne. Il ne doit pas nécessairement être dans l'une des étiquettes, tant que c'est dans le sujet ou le texte de la question quelque part. Cela permet aux utilisateurs de savoir quelle fonctionnalité vous avez à leur disposition lorsqu'ils répondent. :-) –