Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v20 R7
EXECUTE METHOD IN SUBFORM

EXECUTE METHOD IN SUBFORM 


 

EXECUTE METHOD IN SUBFORM ( UnterformularObjekt ; MethodenName {; Rückgabe {; Parameter} {; Parameter2 ; ... ; ParameterN}} ) 
Parameter Typ   Beschreibung
UnterformularObjekt  Text in Name des Objekts Unterformular
MethodenName  Objekt, Text in Name der auszuführenden Projektmethode
Rückgabe  Operator, Variable in Von der Methode zurückgegebener Wert oder
in * wenn Methode keinen Wert zurückgibt.
Parameter  Ausdruck in Parameter, die der Methode übergeben werden sollen

Der Befehl EXECUTE METHOD IN SUBFORM führt die Projektmethode MethodenName im Kontext des Objekts UnterformularObjekt aus. 

Die aufgerufene Projektmethode kann in Parameter Werte von 1 bis X empfangen und in Rückgabe einen Wert zurückgeben. Übergeben Sie * im Parameter Rückgabe, wenn die Methode keine Parameter zurückgibt.

In formula, you designate the 4D code to be executed in the context of subformObject. You can pass either:
In der Formel geben Sie den 4D Code an, der im Kontext von subformObject ausgeführt werden soll. Sie können entweder übergeben:

  • ein Formel-Objekt (siehe Formel-Objekte). Formel-Objekte können beliebige ausführbare Ausdrücke kapseln, einschließlich Funktionen und Projektmethoden;
  • einen String, der den Namen einer Projektmethode enthält. 

Der Kontext der Ausführung wird in der aufgerufenen Methode beibehalten, d.h. das aktuelle Formular sowie Formularereignis bleiben definiert. Kommt das Unterformular von einer Komponente, muss die Methode zur Komponente gehören und die Eigenschaft "von Komponente und Host Datenbank gemeinsam genutzt" haben.

Dieser Befehl muss im Kontext des Elternformulars aufgerufen werden, welches das Objekt UnterformularObjekt enthält, z.B. über die Formularmethode.

Hinweis: Die Methode MethodenName wird nicht ausgeführt, wenn UnterformularObjekt in der aktuellen Seite nicht gefunden wird.

Wir gehen aus vom Formular "KundeDetail", das im Elternformular "Firma" als Unterformular verwendet wird. Das Objekt Unterformular mit dem Formular KundeDetail lautet "KundeUnterformular". Wir wollen nun die Darstellung bestimmter Elemente im Unterformular je nach Wert des Feldes Firma verändern: "Kundenname" soll in Rot wechseln, wenn gilt [Firma]Stadt="Berlin" und in Blau, wenn gilt [Firma]Stadt="Frankfurt". Diese Operation wird über die Methode SetToColor integriert. Um dieses Ergebnis zu erreichen, kann die Methode SetToColor nicht direkt über das Formularereignis "On Load" des Elternformulars Firma ausgeführt werden, da das Objekt "Kundenname" nicht zum aktuellen Formular, sondern zum Objekt Unterformular "KundeUnterformular" gehört. Von daher muss die Methode, damit sie korrekt funktioniert, über den Befehl EXECUTE METHOD IN SUBFORM ausgeführt werden.

 Case of
    :(Form event code=On Load)
       Case of
          :([Firma]Stadt ="Berlin")
             $Color:=$Red
          :([Firma]Stadt ="Frankfurt")
             $Color:=$Blue
          Else
             $Color:=$Black
       End case
       EXECUTE METHOD IN SUBFORM("KundeUnterformular";Formula(SetToColor);*;$Color)
 End case

Sie entwickeln eine Datenbank, die als Komponente verwendet wird. Sie enthält ein gemeinsam genutztes Projektformular, z.B. Kalender. Es enthält dynamische Variablen sowie eine öffentliche Projektmethode, um den Kalender anzupassen: SetCalendarDate(varDate).
Würde diese Methode direkt in der Formularmethode Kalender verwendet, könnten Sie sie direkt im Formularereignis "On Load" aufrufen:

 SetCalendarDate(Current date)
. Im Kontext der Host Datenbank kann es passieren, dass ein Projektformular zwei "Kalender" Unterformulare, z.B. in den Unterformularobjekten mit Namen "Kal1" und "Kal2" enthält. Sie müssen das Datum von Kal1 auf 01/01/10 und das Datum von Kal2 auf 05/05/10 setzen. Sie können die Methode SetCalendarDate nicht direkt aufrufen, weil die Methode nicht weiß, welche Formulare und Variablen sie verwenden soll. Deshalb müssen Sie sie über folgenden Code aufrufen: 

 EXECUTE METHOD IN SUBFORM("Cal1";Formula(SetCalendarDate);*;!01/01/10!)
 EXECUTE METHOD IN SUBFORM("Cal2";Formula(SetCalendarDate);*;!05/05/10!)

Wurde der Befehl korrekt ausgeführt, wird die Systemvariable OK auf 1 gesetzt, sonst auf 0 (Null).

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Formularereignisse
Nummer: 1085

Dieser Befehl ändert die Systemvariable OK

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v12
Geändert: 4D v19 R6

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)