Normalement, lorsque vous ouvrez une boîte de dialogue à l'aide de ShowModal, l'exécution du thread en cours s'arrête jusqu'à ce que la boîte de dialogue soit fermée. Je veux afficher une boîte de dialogue Modal, mais continuez l'exécution sur le thread actuel tant que la boîte de dialogue est encore ouverte.Ouverture d'une boîte de dialogue Modal de manière asynchrone dans Delphi
Par "Modal", je veux simplement dire que l'utilisateur ne peut pas interagir avec l'une des autres formes de l'application tant que la boîte de dialogue modale n'est pas fermée.
La fonction Delphi ShowModal fournit une définition légèrement différente de « Modal » à celui que je requiers:
Un formulaire modal est celui où l'application ne peut pas continuer à fonctionner jusqu'à ce que la forme est fermée.
Actuellement, j'ai le code comme ceci:
dialog.Parent:=self;
dialog.Show;
// keep doing stuff...
Cela fonctionne, sauf que je peux toujours interagir avec la fenêtre parent (la déplacer, fermer etc)
Comment afficher une formulaire qui empêche l'utilisateur d'interagir avec la fenêtre parente, sans utiliser ShowModal?
Cela semble avoir fonctionné. J'ai divisé ShowModal en deux fonctions; ShowModalNonBlocking et CloseModalNonBlocking. J'ai dû enlever quelques lignes de code qui ne compileraient pas. J'espère qu'il existe une meilleure solution, mais c'est la meilleure suggestion que j'ai trouvée jusqu'ici. – awmross
Je sais que vous ne pouvez pas poster le code, mais pouvez-vous poster des indices, comme "split à la ligne X"? – Mawg
@Mawg La fonction "ShowModalNonBlocking" s'est terminée par un appel à "Show()". Le "CloseModalNonBlocking" a commencé en envoyant un message Windows pour désactiver le dialogue. J'espère que cela pourra aider? – awmross