Question

J'ai une application Delphi 2006 qui affiche une boîte de dialogue d'alerte modale lorsqu'une condition d'erreur est détectée.Comme la vérification de la condition d'erreur est effectuée dans un gestionnaire inactif, la boîte de dialogue peut apparaître au-dessus d'une autre boîte de dialogue modale si celle-ci s'affiche.Cela peut conduire à une situation déroutante pour l'utilisateur dans laquelle le formulaire principal de l'application n'obtient pas le focus après la fermeture de la boîte de dialogue d'alerte, car il s'agit d'une autre boîte de dialogue modale masquée.

Ce que je voudrais faire, c'est reporter les fenêtres contextuelles d'alerte pendant que l'application a des boîtes de dialogue modales ouvertes.

J'ai essayé GetLastActivePopup (MyMainWindow.Handle) mais il semble revenir tout le temps différent de zéro.

Était-ce utile?

Autres conseils

Il suffit de tester

if not IsWindowEnabled(MyMainWindow.Handle) then

Cela prendrait également en charge les situations où un dialogue non-Delphi agit de manière modale, comme dans windows.MessageBox(Handle....ou un dialogue commun montre (c'est-à-direun TOpenDialog).

Utilisez AnyPopup () fonction

À propos de GetLasCactivePopup ().Il peut renvoyer la valeur est la même que le paramètre HWND lorsque

  • La fenêtre identifiée par HWND a été la plus récemment active.
  • La fenêtre identifiée par HWND ne possède aucune fenêtre contextuelle.
  • La fenêtre identifie par HWND n'est pas une fenêtre de niveau supérieur ou appartient à une autre fenêtre.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top