Saltar al contenido principal
Versión: Siguiente

Print form

Print form ( {aTable ;} form {; formData} {; areaStart{; areaEnd}} ) : Integer

ParámetrosTipoDescripción
aTableTablaTable owning the form, or Default table, if omitted
formText, ObjectName (string) of the form, or a POSIX path (string) to a .json file describing the form, or an object describing the form to print
formDataObjectData to associate to the form
areaStartIntegerPrint marker, or Beginning area (if areaEnd is specified)
areaEndIntegerEnding area (if areaStart specified)
ResultadoIntegerHeight of printed section

This command is not thread-safe, it cannot be used in preemptive code.

Descripción

Print form simply prints form with the current values of fields and variables of aTable.Print form simply prints form with the current values of fields and variables of aTable.Print form simply prints form with the current values of fields and variables of aTable.Print form simply prints form with the current values of fields and variables of aTable.Print form simply prints form with the current values of fields and variables of aTable.Print form simply prints form with the current values of fields and variables of aTable. It is usually used to print very complex reports that require complete control over the printing process. Print form does not do any record processing, break processing or page breaks. These operations are your responsibility. Print form prints fields and variables in a fixed size frame only.

In the form parameter, you can pass:

  • the name of a form, or
  • the path (in POSIX syntax) to a valid .json file containing a description of the form to use (see Form file path), or
  • an object containing a description of the form.

Since Print form does not issue a page break after printing the form, it is easy to combine different forms on the same page. Thus, Print form is perfect for complex printing tasks that involve different tables and different forms. To force a page break between forms, use the PAGE BREAK command. In order to carry printing over to the next page for a form whose height is greater than the available space, call the CANCEL command before the PAGE BREAK command.

Three different syntaxes may be used:

  • Detail area printing

Sintaxis:

 height:=Print form(myTable;myForm)

In this case, Print form only prints the Detail area (the area between the Header line and the Detail line) of the form.

  • Form area printing

Sintaxis:

 height:=Print form(myTable;myForm;marker)

In this case, the command will print the section designated by the marker. Pass one of the constants of the Form Area theme in the marker parameter:

ConstanteTipoValor
Form break0Integer300
Form break1Integer301
Form break2Integer302
Form break3Integer303
Form break4Integer304
Form break5Integer305
Form break6Integer306
Form break7Integer307
Form break8Integer308
Form break9Integer309
Form detailInteger0
Form footerInteger100
Form headerInteger200
Form header1Integer201
Form header10Integer210
Form header2Integer202
Form header3Integer203
Form header4Integer204
Form header5Integer205
Form header6Integer206
Form header7Integer207
Form header8Integer208
Form header9Integer209
  • Section printing

Sintaxis:

 height:=Print form(myTable;myForm;areaStart;areaEnd)

In this case, the command will print the section included between the areaStart and areaEnd parameters. The values entered must be expressed in pixels.

formData

Optionally, you can pass parameters to the form using either the formData object or the form class object automatically instantiated by 4D if you have associated a user class to the form. Any properties of the form data object will then be available from within the form context through the Form command. Optionally, you can pass parameters to the form using either the formData object or the form class object automatically instantiated by 4D if you have associated a user class to the form.

Para obtener información detallada sobre el objeto de datos del formulario, consulte el comando DIALOG.

Valor devuelto

The value returned by Print form indicates the height of the printable area. This value will be automatically taken into account by the Get printed height command.

The printer dialog boxes do not appear when you use Print form. The report does not use the print settings that were assigned to the form in the Design environment. There are two ways to specify the print settings before issuing a series of calls to Print form:

Print form builds each printed page in memory. Each page is printed when the page in memory is full or when you call PAGE BREAK. To ensure the printing of the last page after any use of Print form, you must conclude with the PAGE BREAK command (except in the context of an OPEN PRINTING JOB, see note). Otherwise, if the last page is not full, it stays in memory and is not printed.

Warning: If the command is called in the context of a printing job opened with OPEN PRINTING JOB, you must NOT call PAGE BREAK for the last page because it is automatically printed by the CLOSE PRINTING JOB command. If you call PAGE BREAK in this case, a blank page is printed.

This command prints external areas and objects (for example, 4D Write or 4D View areas). The area is reset for each execution of the command.

Warning: Subforms are not printed with Print form. To print only one form with such objects, use PRINT RECORD instead.

Print form generates only one On Printing Detail event for the form method.

4D Server: This command can be executed on 4D Server within the framework of a stored procedure. In this context:

  • Make sure that no dialog box appears on the server machine (except for a specific requirement).
  • In the case of a problem concerning the printer (out of paper, printer disconnected, etc.), no error message is generated.

Ejemplo 1

The following example performs as a PRINT SELECTION command would. However, the report uses one of two different forms, depending on whether the record is for a check or a deposit:

 QUERY([Register]) // Seleccionar los registros
 If(OK=1)
    ORDER BY([Register]) // Ordenar los registros
    If(OK=1)
       PRINT SETTINGS // Mostrar cuadros de diálogo de impresión
       If(OK=1)
          For($vlRecord;1;Records in selection([Register]))
             If([Register]Type ="Check")
                Print form([Register];"Check Out") // Utilice un formulario para cheques
             Else
                Print form([Register];"Deposit Out") // Utilice otro formulario para depósitos
             End if
             NEXT RECORD([Register])
          End for
          PAGE BREAK // Asegúrese de que se imprime la última página
       End if
    End if
 End if

Ejemplo 2

Refer to the example of the SET PRINT MARKER command.

Ejemplo 3

This form is used as dialog, then printed with modifications:

The form method:

 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

The code that calls the dialog then prints its body:

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

Ver también

CANCEL
PAGE BREAK
PRINT SETTINGS
SET PRINT OPTION