Normalerweise wird beim Ausführen eines Dialogfelds mit ShowModal die Ausführung des aktuellen Threads angehalten, bis das Dialogfeld geschlossen wird. Ich möchte einen Modal-Dialog anzeigen, aber die Ausführung für den aktuellen Thread fortsetzen, während das Dialogfeld noch geöffnet ist.Öffnen eines Modal-Dialogfelds asynchron in Delphi
Mit "Modal" meine ich einfach, dass der Benutzer mit keiner der anderen Formen der Anwendung interagieren kann, bis der modale Dialog geschlossen ist.
Die Delphi ShowModal Funktion liefert eine etwas andere Definition von „Modal“ zu dem einen I erfordern:
A modale Form ist eine, wo die Anwendung nicht weitergeführt werden können, bis die Form geschlossen ist.
Zur Zeit habe ich Code wie folgt:
dialog.Parent:=self;
dialog.Show;
// keep doing stuff...
Dies funktioniert, außer ich noch mit dem übergeordneten Fenster in Wechselwirkung treten können (es bewegen, schließen Sie es etc)
Wie kann ich ein Formular, das den Benutzer daran hindert, mit dem übergeordneten Fenster zu interagieren, ohne ShowModal zu verwenden?
Dies scheint zu funktionieren. Ich habe ShowModal in zwei Funktionen aufgeteilt; ShowModalNonBlocking und CloseModalNonBlocking. Ich musste ein paar Codezeilen entfernen, die nicht kompiliert werden konnten. Ich hoffe, dass es eine bessere Lösung gibt, aber das ist der beste Vorschlag, den ich bisher gefunden habe. – awmross
Ich weiß, dass Sie den Code nicht veröffentlichen können, aber können Sie Hinweise wie "Split in Zeile X" posten? – Mawg
@Mawg Die Funktion "ShowModalNonBlocking" wurde mit einem Aufruf von "Show()" beendet. Das "CloseModalNonBlocking" wurde gestartet, indem eine Windows-Nachricht gesendet wurde, um das Dialogfeld zu deaktivieren. Ich hoffe, das hilft? – awmross