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

Home

 
4D v20 R7
FORM LOAD

FORM LOAD 


 

FORM LOAD ( {Tabellenname ;} Formularname {; formData}{; *} ) 
Parameter Typ   Beschreibung
Tabellenname  Tabelle in Zu ladendes Tabellenformular (wenn weggelassen, wird Projektformular geladen)
Formularname  String, Objekt in Name (String) des Projekt- oder Tabellenformulars oder
POSIX Pfad (String) zu einer .json Datei mit Beschreibung des Formulars oder
Objekt mit Beschreibung des zu öffnenden Formulars
formData  Objekt in Data to associate to the form
Operator in Mit * wird der Befehl auf Host Datenbank angewandt, wenn er von einer Komponente ausgeführt wird (außerhalb dieses Kontexts wird der Parameter ignoriert)

Der Befehl FORM LOAD lädt das Formular zusammen mit formData (optional) im Speicher in den aktuellen Prozess, um seine Daten zu drucken oder den Inhalt zu analysieren [#/descv]. Es gibt immer nur ein aktuelles Formular pro Prozess.

Im Parameter Formularname übergeben Sie:

  • Den Namen des Formulars oder
  • Den Pfad (in POSIX Syntax) zu einer gültigen .json Datei mit der Beschreibung des Formulars (siehe Dateipfade für Formulare) oder
  • Ein Objekt mit der Beschreibung des Formulars. Weitere Informationen dazu finden Sie unter Dynamische Formulare.

Wenn der Befehl von einer Komponente aus ausgeführt wird, lädt er standardmäßig die Formulare der Komponente. Wenn Sie den Parameter * übergeben, lädt die Methode die Formulare der Host Datenbank.

Optional können Sie mit dem formData-Objekt Parameter an das Formular übergeben. Alle Eigenschaften des formData-Objekts sind dann im Formularkontext über den Befehl Form verfügbar. Wenn Sie z.B. ein Objekt mit {"version", "12"} in formData übergeben, können Sie den Wert der Eigenschaft "version" im Formular durch einen Aufruf abrufen oder setzen:

 $v:=Form.version //"12"
 Form.version:=13

Das formData-Objekt ist im Formularereignis On Load verfügbar.

formData ermöglicht Ihnen die sichere Übergabe von Parametern an Ihre Formulare, egal in welchem Kontext sie aufgerufen werden. Insbesondere, wenn dasselbe Formular von verschiedenen Stellen im selben Prozess aufgerufen wird, können Sie immer auf seine spezifischen Werte zugreifen, indem Sie einfach Form.myProperty aufrufen. 

Hinweis: Wenn Sie den Parameter formData nicht übergeben oder wenn Sie ein undefiniertes Objekt übergeben, erstellt FORM LOAD automatisch ein neues leeres Objekt, das an das Formular gebunden ist und über den Befehl Form verfügbar ist.

Um diesen Befehl auszuführen, muss zuvor mit dem Befehl OPEN PRINTING JOB ein Druckauftrag geöffnet werden. Der Befehl OPEN PRINTING JOB ruft implizit den Befehl FORM UNLOAD auf, so dass es in diesem Zusammenhang notwendig ist, FORM LOAD auszuführen. Das geladene Formular wird zum aktuellen Druckformular. Alle Befehle zur Objektverwaltung sowie die Funktion Print object arbeiten mit diesem Formular.

Wurde bereits zuvor ein Druckformular geladen (über einen früheren Aufruf von FORM LOAD), wird es geschlossen und durch Formular ersetzt. Sie können in der gleichen Drucksitzung verschiedene Projektformulare öffnen und schließen. Beim Ändern des Druckformulars über FORM LOAD werden keine Umbrüche generiert. Der Entwickler muss selbst die Seitenumbrüche verwalten. 

Nur das Formularereignis On Load wird beim Öffnen des Projektformulars ausgeführt. Die anderen Formularereignisse werden ignoriert. Das Formularereignis On Unload wird am Ende des Druckens ausgeführt.

Um die grafische Konsistenz von Formularen beizubehalten, empfehlen wir, die Darstellungseigenschaft "Drucken" unabhängig von der Plattform anzuwenden.

Das aktuelle Druckformular wird automatisch geschlossen, wenn der Befehl CLOSE PRINTING JOB aufgerufen wird.

Hier wird ein off-screen Formular zur Analyse des Inhalts geladen. Dazu rufen Sie FORM LOAD außerhalb eines Druckauftrags auf. In diesem Anwendungsfall werden die Formularereignisse nicht ausgeführt.

FORM LOAD lässt sich zusammen mit den Befehlen FORM GET OBJECTS und OBJECT Get type verwenden, um den Inhalt des Formulars abzufragen. Sie müssen zum Schluss den Befehl FORM UNLOAD aufrufen, um das Formular aus dem Speicher zu entfernen.

Beachten Sie, dass ein bereits angezeigtes Formular auf dem Bildschirm dabei geladen bleibt (es ist vom Befehl FORM LOAD nicht betroffen), es muss also nach Aufruf von FORM UNLOAD nicht erneut geladen werden.

Zur Erinnerung: Damit es zu keiner Speicherüberlastung kommt, sollten Sie im im off-screen Kontext den Befehl FORM UNLOAD aufrufen.

Ein Projektformular in einem Druckauftrag aufrufen:

 OPEN PRINTING JOB
 FORM LOAD("Druckformular")
  // Ereignisse und Objektmethoden ausführen

Ein Tabellenformular in einem Druckauftrag aufrufen:

 OPEN PRINTING JOB
 FORM LOAD([People];"Druckformular")
  // Ereignisse und Objektmethoden ausführen

Inhalt des Formulars analysieren (parsen), um Eingabebereiche für Text zu bearbeiten:

 FORM LOAD([People];"my_form")
  // Formular ohne Ausführen von Ereignissen oder Methoden auswählen
 FORM GET OBJECTS(arrObjNames;arrObjPtrs;arrPages;*)
 For($i;1;Size of array(arrObjNames))
    If(OBJECT Get type(*;arrObjNames{$i})=Object type text input)
  //… Bearbeitungen
    End if
 End for
 FORM UNLOAD //Nicht vergessen, das Formular wieder zu entladen

Dieses Beispiel gibt die Anzahl der Objekte in einem JSON Formular zurück:

 ARRAY TEXT(objectsArray;0) //sortiert Formulareinträge in Arrays
 ARRAY POINTER(variablesArray;0)
 ARRAY INTEGER(pagesArray;0)
 
 FORM LOAD("/RESOURCES/OutputForm.json") //lädt das Formular
 FORM GET OBJECTS(objectsArray;variablesArray;pagesArray;Form all pages+Form inherited)
 
 ALERT("The form contains "+String(size of array(objectsArray))+" objects") //gibt die Anzahl Obhekte zurück

Das Ergebnis lautet:

Sie möchten ein Formular drucken, das eine Listbox enthält. Während des Ladevorgangs soll der Inhalt der Listbox geändert werden.

1. Bei der Druckmethode schreiben Sie:

 var $formData : Object
 var $over : Boolean
 var $full : Boolean
 
 OPEN PRINTING JOB
 $formData:=New object
 $formData.LBcollection:=New collection()
 ... //Füllen Sie die Collection mit Daten
 
 FORM LOAD("GlobalForm";$formData//Speichern Sie die Collection in $formData
 $over:=False
 Repeat
    $full:=Print object(*;"LB") // die Datenquelle dieser "LB"-Listbox ist Form.LBcollection
    LISTBOX GET PRINT INFORMATION(*;"LB";lk printing is over;$over)
    If(Not($over))
       PAGE BREAK
    End if
 Until($over)
 FORM UNLOAD
 CLOSE PRINTING JOB

2. In der Formularmethode können Sie schreiben:

 var $o : Object
 Case of
    :(Form event code=On Load)
       For each($o;Form.LBcollection) //LBcollection ist verfügbar
          $o.reference:=Uppercase($o.reference)
       End for each
 End case



Siehe auch 

Current form name
FORM UNLOAD
LISTBOX GET OBJECTS
OBJECT Get type
Print object

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Formulare
Nummer: 1103

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v12
Geändert: 4D v14
Umbenannt: 4D v14 (OPEN PRINTING FORM)
Geändert: 4D v16 R6
Geändert: 4D v20

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)