versión 2004.5 (Modificado)
Print form ({tabla; }form{; area1{; area2}}){ Numérico }
Parámetro | Tipo | Descripción | |
tabla | Tabla | Tabla a imprimir, o | |
Tabla por defecto, si se omite | |||
form | Alfa | Formulario a imprimir | |
area1 | Numérico | Marcador de impresión, o | |
Área de inicio (si area2 se especifica) | |||
area2 | Numérico | Área de fin (si área1 se especifica) | |
Resultado | Numérico | Altura de la sección impresa |
Descripción
Print form simplemente imprime form con los valores actuales de los campos y variables. Generalmente este comando se utiliza para imprimir informes muy complejos que necesiten un control total del proceso de impresión. Print form no procesa registros, ni rupturas o saltos de páginas. Estas operaciones son su responsabilidad. Print form imprime campos y variables en un marco de tamaño fijo únicamente.
Como Print form no genera un salto de página después de imprimir el formulario, es fácil combinar diferentes formularios en la misma página. Entonces, Print form es ideal para efectuar tareas de impresión complejas que involucren diferentes tablas y diferentes formularios. Para forzar un salto de página entre formularios, utilice el comando PAGE BREAK. Para pasar a la siguiente página de un formulario cuya altura es mayor que el espacio disponible, llame el comando CANCEL antes del comando PAGE BREAK.
Se pueden utilizar tres sintaxis diferentes:
Impresión del área de detalle
Sintaxis:
altura:=Print form (miTabla;miForm)
En este caso, Print form sólo imprime el área de detalle (el área entre la línea encabezado y la línea detalle) del formulario.
Impresión del área del formulario
Sintaxis:
altura:=Print form (miTabla;miForm;marcador)
En este caso, el comando imprimirá la sección designada por el marcador. Pase en el parámetro
marcadoruna de las constantes del tema Form area:
Constante | Tipo | Valor |
Form Header | Entero largo | 200 |
Form Header1...10 | Entero largo | 201...210 |
Form Detail | Entero largo | 0 |
Form Break0...9 | Entero largo | 300...309 |
Form Footer | Entero largo | 100 |
Impresión de sección
Sintaxis:
altura:=Print form (miTabla;miForm;areaInicio;areaFin)
En este caso, el comando imprimirá la sección incluida entre los parámetros areaInicio y areaFin Parámetros. Los valores introducidos deben expresarse en píxeles.
El valor devuelto por Print form indica la altura del área de impresión. Este valor será tomado en cuenta automáticamente por el comando Get printed height.
Las cajas de diálogo de impresión no aparecen cuando utiliza Print form. El informe no utiliza los parámetros de impresión definidos para el formulario en el entorno Diseño. Hay dos formas de especificar los parámetros de impresión antes de efectuar una serie de llamadas a Print form:
Llamar PRINT SETTINGS. En este caso, usted le permite al usuario elegir los parámetros.
Llamar PAGE SETUP. En este caso, los parámetros de impresión se especifican por programación.
Print form construye cada página impresa en memoria. Cada página se imprime cuando la página en memoria está llena o cuando usted llama a PAGE BREAK. Para asegurar la impresión de la última página después de utilizar Print form, debe concluir con el comando PAGE BREAK. De lo contrario, si la última página no está llena, permanece en memoria y no se imprime.
A partir de la versión 2004.5 de 4D, este comando imprime las áreas y objetos externos (por ejemplo, las áreas 4D Write o 4D View). El área se reinicializa para cada ejecución del comando.
Advertencia: Print form no imprime subformularios. Para imprimir sólo un formulario con tales objetos, utilice mejor PRINT RECORD.
Print form genera únicamente un evento On Printing Detail por método de formulario.
4D Server: Este comando puede ejecutarse en 4D Server en el marco de un procedimiento almacenado. En este contexto:
Asegúrese de que no aparezca ninguna caja de diálogo en el equipo servidor (excepto para una necesidad específica).
En el caso de un problema relacionado con la impresora (sin papel, impresora desconectada, etc.), no se genera un mensaje de error.
Ejemplos
1. El siguiente ejemplo funciona como lo haría un comando PRINT SELECTION. Sin embargo, el informe utiliza uno de los dos formularios diferentes, dependiendo de si el registro es para un cheque o para un depósito:
QUERY([Registro]) ` Select the records If (OK=1) ORDER BY([Registro]) ` Ordenar los registros If (OK=1) PRINT SETTINGS ` Mostrar las cajas de diálogo de impresión If (OK=1) For ($vlRegistro; 1; Records in selection([Registro])) If ([Registro]Tipo = "Cheque") Print form ([Registro]; "SalidaCheque") ` Utilice un formulario de cheques Else Print form ([Registro]; "SalidaDeposito") ` Utilizar otro formulario de depósitos End if NEXT RECORD([Registro]) End for PAGE BREAK ` Asegúrese de que la última página se imprima End if End if End if
2. Consulte el ejemplo del comando SET PRINT MARKER.
Ver también
CANCEL, PAGE BREAK, PAGE SETUP, PRINT SETTINGS.