Ich habe eine modale Form und in der Ok-Schaltfläche verarbeitet sie einige Informationen, die ich in der Form brauche, die das modale Formular genannt hat.
Wie kann ich es herausholen, bevor es schließt?
Oder verzögere die Schließung, bis ich sage, dass sie schließen kann.
Ich erwarte, dass Ihre Schaltfläche OK ModalResult
auf mrOK
gesetzt hat. Wenn Sie eine Fehlerprüfung zur Schaltfläche OK hinzufügen möchten, ändern Sie diese in mrNone
. Fügen Sie der Schaltfläche einen OnClick
-Handler hinzu, der die von Ihnen benötigte Überprüfung oder Verarbeitung durchführt. Wenn festgestellt wird, dass das Formular geschlossen werden kann, legen Sie in der Prozedur Self.ModalResult := mrOK
OnClick
fest.
Müssen Sie wirklich auf die Informationen zugreifen, bevor das Formular geschlossen wird? Das Verzögern des Schließens eines Formulars wirkt sich auf die Benutzererfahrung der App aus (es sei denn, es ist schnell genug, dass sie es nicht bemerken - in welchem Fall warum überhaupt verzögern?)
Ein geschlossenes Formular ist für den Aufrufer immer noch im Speicher verfügbar (außer die Schließaktion ist caFreeOnClose). Sie sollten daher öffentliche Eigenschaften zum Formular hinzufügen können, auf die Sie dann innerhalb des Aufrufers zugreifen können.
z. B.
%Vor%Vom Anrufer:
%Vor%Nur eine Kombination aus dem, was andere sagen.
Es ist eine gute Idee, zu formalisieren, wie man Daten aus einem modalen Dialog validiert und herausholt. Immer wieder die gleiche Technik zu verwenden, macht alles leichter zu pflegen und zu lesen.
Ein Beispiel:
%Vor%von Ihrem Hauptformular:
%Vor%Als Ergänzung zu JamesBs Antwort .
Sie müssen Form2.Free aufrufen, nachdem Sie die gewünschten Informationen erhalten haben.
Im Allgemeinen füge ich der Einheit des zweiten Formulars eine neue Funktion hinzu, etwa:
%Vor%Tags und Links delphi modal-dialog