4D v16.3

CALL FORM

Home

 
4D v16.3
CALL FORM

CALL FORM 


 

CALL FORM ( Fenster ; Methode {; Param}{; Param2 ; ... ; ParamN} ) 
Parameter Typ   Beschreibung
Fenster  WinRef in Referenznummer des Fensters
Methode  Text in Name der aufzurufenden Projektmethode
Param  in 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 Fenster übergeben Sie die Referenznummer des Fensters, welches das aufgerufene Formular anzeigt.

In Methode übergeben Sie den Namen der Projektmethode, die im Kontext des Elternprozesses für das Fenster ausgeführt werden soll.

In Param können Sie einen oder mehrere Parameter für die Methode übergeben. Das funktioniert genauso wie Parameter für eine Unterroutine übergeben, siehe Abschnitt Parameter in Methoden . Beim Starten der Ausführung im Rahmen des Formulars empfängt die Methode die Parameterwerte in $1, $2, etc. Beachten Sie auch, dass sich Arrays nicht als Parameter für eine Methode übergeben lassen. Außerdem müssen Sie für den Befehl CALL FORM folgendes beachten:

  • Zeiger auf Tabellen oder Felder sind erlaubt.
  • Zeiger auf Variablen, insbesondere lokale und Prozessvariablen werden nicht empfohlen, da sie zum Zeitpunkt, wo die Prozessmethode auf sie zugreift, undefiniert sein können.
  • Übergeben Sie einen Parameter vom Typ Objekt, erstellt 4D im Zielprozess eine Kopie des Objekts, wenn das Formular nicht in dem Prozess liegt, den der Befehl CALL FORM aufruft.

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")

Ü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;"configure";param1;param2)
 DIALOG("form")



Siehe auch 


CALL WORKER

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Formulare
Nummer: 1391

This command can be run in preemptive processes

 
GESCHICHTE 

Erstellt: 4D v15 R5

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)