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

Home

 
4D v20 R7
Print form

Print form 


 

Print form ( {Tabellenname ;} Formularname {; formData} {; BereichStart{; BereichEnde}} ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
Tabellenname  Tabelle in Zu druckende Tabelle, ohne Angabe Standardtabelle
Formularname  String, Objekt in Name (String) des Formulars oder
POSIX Pfad (String) zu einer .json Datei mit Beschreibung des Formulars oder
Objekt mit Beschreibung des zu druckenden Formulars
formData  Objekt in Data to associate to the form
BereichStart  Lange Ganzzahl in Druckmarke oder Beginn des Bereichs (wenn BereichEnde angegeben)
BereichEnde  Lange Ganzzahl in Ende des Bereichs (wenn BereichStart angegeben)
Funktionsergebnis  Lange Ganzzahl in Höhe des gedruckten Bereichs

Die Funktion Print form druckt das Formular mit den aktuellen Feldwerten und Variablen der Tabelle. Sie wird in der Regel verwendet, um sehr komplexe Berichte zu drucken, die eine  komplette Steuerung des Druckvorgangs erforderlich machen. Print form führt keine Datensatzverarbeitung, Umbruchverarbeitung oder Seitenumbrüche durch. Diese Operationen müssen Sie selbst ausführen. Mit Print form werden Datenfelder und Variablen nur in einer festen Rahmengröße gedruckt.

Im Parameter Formular ü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

Da Print form nach Drucken des Formulars keinen Seitenumbruch auslöst, können Sie so verschiedene Formulare auf einer Seite kombinieren. Print form ist für komplexe Druckvorgänge mit verschiedenen Tabellen und Formularen gut geeignet. Mit dem Befehl PAGE BREAK legen Sie zwischen den Formularen einen Seitenumbruch an. Um ein Formular, dessen Höhe den verfügbaren Platz übersteigt, auf der nächsten Seite weiterzudrucken, rufen Sie vor PAGE BREAK den Befehl CANCEL auf.

Es gibt drei verschiedene Syntaxarten:

• Detailbereich drucken

 height:=Print form(MeineTabelle;MeinFormular)

In diesem Fall druckt die Funktion nur den Detailbereich, das ist im Formular der Bereich zwischen Kopfzeile und der Marke D.

• Formularbereich drucken

 height:=Print form(MeineTabelle;MeinFormular;Marke)

In diesem Fall druckt die Funktion den durch Marke angegebenen Bereich. Als Parameter übergeben Sie eine Konstante unter dem Thema Formularbereich:

Konstante Typ Wert
Form break0 Lange Ganzzahl 300
Form break1 Lange Ganzzahl 301
Form break2 Lange Ganzzahl 302
Form break3 Lange Ganzzahl 303
Form break4 Lange Ganzzahl 304
Form break5 Lange Ganzzahl 305
Form break6 Lange Ganzzahl 306
Form break7 Lange Ganzzahl 307
Form break8 Lange Ganzzahl 308
Form break9 Lange Ganzzahl 309
Form detail Lange Ganzzahl 0
Form footer Lange Ganzzahl 100
Form header Lange Ganzzahl 200
Form header1 Lange Ganzzahl 201
Form header10 Lange Ganzzahl 210
Form header2 Lange Ganzzahl 202
Form header3 Lange Ganzzahl 203
Form header4 Lange Ganzzahl 204
Form header5 Lange Ganzzahl 205
Form header6 Lange Ganzzahl 206
Form header7 Lange Ganzzahl 207
Form header8 Lange Ganzzahl 208
Form header9 Lange Ganzzahl 209

• Bereich drucken

 height:=Print form(MeineTabelle;MeinFormular;BereichStart;BereichEnd)

In diesem Fall druckt die Funktion den Bereich zwischen den Parametern BereichStart und BereichEnde. Die Werte müssen in Pixel angegeben werden.

formData

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 Printing Detail-Formular 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 Print form automatisch ein neues leeres Objekt, das an das Formular gebunden ist und über den Befehl Form verfügbar ist.

 

Rückgabewert

Der von Print form zurückgegebene Wert gibt die Höhe des druckbaren Bereichs an. Diesen Wert berücksichtigt die Funktion Get printed height automatisch.

 

Mit Print form erscheinen keine Druckdialoge. Der Bericht verwendet nicht die Druckereinstellungen, die dem Formular in der Designumgebung zugewiesen wurden. Sie können die Druckereinstellungen vor Aufrufen von Print form auf zwei Arten festlegen:

  • Sie rufen PRINT SETTINGS auf. In diesem Fall bestimmt der Benutzer die Einstellungen.
  • Sie rufen _o_PAGE SETUP auf. In diesem Fall werden die Einstellungen per Programmierung festgelegt.

4D erstellt die zu druckende Seite im Hauptspeicher. Die Seite wird ausgedruckt, wenn die Seite im Speicher voll ist oder wenn Sie den Befehl PAGE BREAK aufrufen. Sie müssen den Druckvorgang mit PAGE BREAK abschließen, damit auch die letzte Seite ausgedruckt wird, selbst wenn sie nicht voll ist (außer im Kontext des Befehls OPEN PRINTING JOB, siehe nachfolgende Warnung).

Warnung: Wird die Funktion in einem Druckauftrag aufgerufen, der mit OPEN PRINTING JOB geöffnet wurde, dürfen Sie für die letzte Seite NICHT PAGE BREAK aufrufen, da OPEN PRINTING JOB sie automatisch druckt. Rufen Sie in diesem Fall den Befehl PAGE BREAK auf, wird eine leere Seite gedruckt. 

Dieser Befehl druckt externe Bereiche und Objekte, z.B. 4D Write oder 4D View Bereiche. Der Bereich wird für jede Ausführung des Befehls neu aufgebaut.

Warnung: Mit Print form werden keine Unterformulare ausgedruckt. Wollen Sie nur ein Formular für solch ein Objekt ausdrucken, verwenden Sie dafür den Befehl PRINT RECORD.

Print form erstellt nur ein Ereignis On Printing Detail für die Formularmethode.

4D Server: Diese Funktion lässt sich auf 4D Server im Rahmen einer Serverprozedur ausführen. In diesem Kontext müssen Sie folgendes beachten:

  • Stellen Sie sicher, dass auf dem Server Rechner kein Dialogfenster erscheint, außer für spezifische Anforderungen.
  • Bei einem Druckerproblem, z.B. kein Papier oder Drucker nicht verfügbar, erscheint keine Fehlermeldung.

Folgendes Beispiel arbeitet wie der Befehl PRINT SELECTION. Der Bericht verwendet jedoch zwei verschiedene Formulare, je nachdem, ob der Datensatz für Scheck oder Bareinzahlung ist:

 QUERY([Register]` Wähle die Datensätze
 If(OK=1)
    ORDER BY([Register]` Sortiere die Datensätze
    If(OK=1)
       PRINT SETTINGS ` Zeige Druckdialoge
       If(OK=1)
          For($vlRecord;1;Records in selection([Register]))
             If([Register]Type ="Scheck")
                Print form([Register];"Scheckvordruck")
  ` Verwenden Sie ein Formular für Schecks
             Else
                Print form([Register];"Vordruck für Bareinzahlung")
  ` Verwenden Sie ein anderes Formular für Bareinzahlung
             End if
             NEXT RECORD([Register])
          End for
          PAGE BREAK ` Stellen Sie sicher, dass die letzte Seite gedruckt wird
       End if
    End if
 End if

Siehe Beispiel zum Befehl SET PRINT MARKER.

Dieses Formular wird als Dialog verwendet und dann mit Änderungen ausgedruckt:

Die Formularmethode:

 If(Form event code=On Printing Detail)
    Form.lastname:=Uppercase(Form.lastname)
    Form.firstname:=Uppercase(Substring(Form.firstname;1;1))+Lowercase(Substring(Form.firstname;2))
    Form.request:=Lowercase(Form.request)
 End if

Der Code, der das Dialogfeld aufruft, gibt dann dessen Hauptteil aus:

 $formData:=New object
 $formData.lastname:="Smith"
 $formData.firstname:="john"
 $formData.request:="I need more COFFEE"
 $win:=Open form window("Request_obj";Plain form window;Horizontally centered;Vertically centered)
 DIALOG("Request_obj";$formData)
 $h:=Print form("Request_var";$formData;Form detail)



Siehe auch 

CANCEL
PAGE BREAK
PRINT SETTINGS
SET PRINT OPTION

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Drucken
Nummer: 5

Im remote Modus anderes Verhalten

 
SEITENINHALT 
 
GESCHICHTE 

Geändert: 4D 2004.5
Geändert: 4D v16 R6
Geändert: 4D v20

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)