Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
CALL FORM
|
CALL FORM ( Fenster ; Methode {; Param}{; Param2 ; ... ; ParamN} ) | ||||||||
Parameter | Typ | Beschreibung | ||||||
Fenster | WinRef |
![]() |
Referenznummer des Fensters | |||||
Methode | Objekt, Text |
![]() |
Name der aufzurufenden Projektmethode | |||||
Param | Ausdruck |
![]() |
Parameter zur Methode | |||||
Der Befehl CALL FORM führt die Projektmethode mit dem in Methode übergebenen Namen aus, mit dem optionalen Param im Kontext eines Formulars, das in Fenster angezeigt wird, unabhängig vom Prozess, zu dem das Fenster gehört.
Wie bei der auf Workern basierenden Interprozesskommunikation (siehe Über Worker), ist dem Fenster eine Nachrichtenbox zugeordnet, die verwendet werden kann, wenn das Fenster ein Formular anzeigt (nach dem Formularereignis On Load). CALL FORM bindet Methodenname und Befehlsargumente in eine Nachricht ein, die in die Nachrichtenbox gelegt werden. Das Formular führt die Nachricht dann in einem eigenen Prozess aus.
In der Formel legen Sie fest, dass der 4D Code im Kontext des übergeordneten Prozesses des Fensters ausgeführt werden soll. Sie können entweder übergeben:
Sie können auch Parameter an die Formel übergeben, indem Sie einen oder mehrere optionale param-Parameter verwenden. Sie können sequenzielle Parameter oder, wenn der Ausdruck der Formel eine Funktion oder eine Projektmethode ist, benannte Parameter verwenden. Beim Start der Ausführung im Kontext des Prozesses empfängt die Prozessformel die Parameterwerte entweder in den benannten Parametern oder in $1, $2, usw. Denken Sie daran, dass Arrays nicht als Parameter übergeben werden können. Darüber hinaus müssen im Zusammenhang mit dem Befehl CALL FORM die folgenden zusätzlichen Überlegungen berücksichtigt werden:
Über den Befehl CALL FORM eigene Einstellungen für ein Formular setzen, z.B. Werte zur Konfiguration - ohne Verwenden von Prozessvariablen:
$win:=Open form window("form")
CALL FORM($win;Formula(configure);param1;param2)
DIALOG("form")
Im gleichen Formular zwei unterschiedliche Fenster öffnen (mit anderen Hintergrundfarben und anderen Meldungen), die Nachrichten dann senden und im jeweiligen Dialogfenster anzeigen.
Eine Schaltfläche im Hauptformular öffnet die beiden Dialoge:
//Objektmethode des Formulars erstellen
// erstes Fenster
formRef1:=Open form window("FormularNachricht";Palette form window;On the left)
SET WINDOW TITLE("MeinFormular1";formRef1)
DIALOG("FormularNachricht";*)
SHOW WINDOW(formRef1)
//zweites Fenster
formRef2:=Open form window("FormularNachricht";Palette form window;On the left+500)
SET WINDOW TITLE("MeinFormular2";formRef2)
DIALOG("FormularNachricht";*)
SHOW WINDOW(formRef2)
//Farben senden
CALL FORM(formRef1;"doSetColor";0x00E6F2FF)
CALL FORM(formRef2;"doSetColor";0x00F2E6FF)
//Meldung aufbauen
CALL FORM(formRef1;"doAddMessage";Current process name;"Hello Form 1")
CALL FORM(formRef2;"doAddMessage";Current process name;"Hello Form 2")
Die Methode doAddMessage fügt nur eine Zeile in einer Listbox im Formular "FormularNachricht" hinzu:
C_TEXT($1) // Name des Aufrufers (caller)
C_TEXT($2) // Nachricht zum Anzeigen
// Nachricht von $2 empfangen und die Nachricht in die Listbox setzen
$p:=OBJECT Get pointer(Object named;"Spalte1")
INSERT IN ARRAY($p->;1)
$p->{1}:=$1+" sendet "+$2
Beim Ausführen erhalten Sie folgendes Ergebnis:
Sie können dann andere Nachrichten hinzufügen. Dazu müssen Sie lediglich den Befehl CALL FORM erneut ausführen:
CALL FORM(formRef1;"doAddMessage";Current process name;"Hello 2 Form 1")
CALL FORM(formRef2;"doAddMessage";Current process name;"Hello 2 Form 2")
Produkt: 4D
Thema: Formularereignisse
Nummer:
1391
Erstellt: 4D v15 R5
Geändert: 4D v16 R4
Geändert: 4D v19 R6
4D Programmiersprache ( 4D v20 R7)