Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
FORM LOAD
|
FORM LOAD ( {Tabellenname ;} Formularname {; formData}{; *} ) | ||||||||
Parameter | Typ | Beschreibung | ||||||
Tabellenname | Tabelle |
![]() |
Zu ladendes Tabellenformular (wenn weggelassen, wird Projektformular geladen) | |||||
Formularname | String, Objekt |
![]() |
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 |
![]() |
Data to associate to the form | |||||
* | Operator |
![]() |
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:
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:
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
Current form name
FORM UNLOAD
LISTBOX GET OBJECTS
OBJECT Get type
Print object
Produkt: 4D
Thema: Formulare
Nummer:
1103
Erstellt: 4D v12
Geändert: 4D v14
Umbenannt: 4D v14 (OPEN PRINTING FORM)
Geändert: 4D v16 R6
Geändert: 4D v20
4D Programmiersprache ( 4D v20 R7)