Daten aus Modal-Formularen abrufen, bevor sie geschlossen werden

8

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.

    
DRokie 19.10.2011, 12:15
quelle

5 Antworten

10

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.

    
David Heffernan 19.10.2011, 12:18
quelle
7

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%     
James Barrass 19.10.2011 12:41
quelle
5

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%     
LU RD 19.10.2011 14:47
quelle
2

Eine Alternative zu Davids Antwort ist die Verwendung von OnClose oder OnCloseQuery -Ereignissen. Mit OnCloseQuery können Sie das Schließen des Formulars verhindern, indem Sie CanClose := false;

setzen     
crefird 19.10.2011 22:54
quelle
2

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%     
Kipow 19.10.2011 14:13
quelle

Tags und Links