AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de impresión
  • Origen y márgenes físicos
  • Gestión del parámetro (Cálculo inmediato>)
  • Combinación de posiciones
  • Impresión en Java y Android
  • Notas adicionales
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Permite gestionar la posición vertical (coordenada Y) del cursor de impresión en la página.. Es posible:
  • Averiguar la posición vertical actual,
  • modificar la posición vertical del cursor de impresión.
Observación: Al imprimir una cadena de caracteres, la posición vertical actual apunta a la parte superior de la cadena que se va a imprimir.. La impresión inferior de Line depende de la altura de las fuentes utilizadas en el Line impreso.
Ejemplo
// Draw horizontal lines every two millimeters
// across the entire page height
iHLine(0, iPageWidth(), 1)  // Draws a line
iYPos(iYPos() + 2)  // Positions the cursor 2 mm lower
iHLine(0, iPageWidth(), 3)  // Draws a second line
iEndPrinting()
Sintaxis

Averiguar la posición vertical del cursor de impresión Ocultar los detalles

<Result> = iYPos()
<Result>: Real
Posición vertical actual del cursor (en milímetros).

Modificar la posición vertical del cursor de impresión Ocultar los detalles

<Result> = iYPos(<Vertical position> [, <Immediate calculation>])
<Result>: Cadena de caracteres
Posición vertical solicitada.
<Vertical position>: Real
Nueva posición vertical (coordenada Y) del cursor de impresión (en milímetros).
<Immediate calculation>: Booleano opcional
  • True (valor predeterminado) para calcular inmediatamente la posición vertical.
  • False si la posición vertical debe ser calculada durante la impresión (cuando se anidan posiciones por ejemplo). Para obtener más información, consulte observaciones.
Observaciones

Origen y márgenes físicos

El origen (0,0) se encuentra en la parte superior izquierda de la hoja Corner. Este origen tiene en cuenta los márgenes físicos de la impresora.
Cada impresora incluye márgenes físicos en los que no es posible imprimir. iMargin se utiliza para definir los márgenes de impresión "lógicos".. Si se definieron márgenes lógicos, la función iYPos gestiona la posición vertical con respecto a estos márgenes.

Gestión del parámetro <Immediate Calculation> (Cálculo inmediato>)

Cuando se especifica el parámetro <Posición vertical> en la función iYPos, la función realiza dos acciones al mismo tiempo:
  • Devuelve una cadena de caracteres de control. Esta cadena de caracteres control modifica la posición de impresión cuando se imprime la cadena.
  • Modifica inmediatamente la posición del cursor de impresión
El parámetro <Cálculo inmediato> se utiliza para recuperar la cadena de caracteres control sin modificar la posición actual del cursor de impresión
sMyTitle is string = "Print title"
iDestination(iViewer)
// --- CASE 1: <Immediate Calculation> is set to True (default)
// Position the cursor at requested location
// Note: The control character string is not retrieved here
iXPos((iPageWidth() - iTextWidth(sMyTitle))/2)
// Calculation to center the text
// Print at cursor position (defined beforehand)
iPrint(sMyTitle) // Must be centered
// --- CASE 2: The same code with <Immediate Calculation> set to False
// The control character string is not retrieved here
// And the print cursor is not positioned because
// <Immediate Calculation> is set to False
// Note: Therefore, this line is not required
iXPos((iPageWidth() - iTextWidth(sMyTitle))/2, False)
// Print at cursor position.
// As the previous code line did not change it, the text will be printed
// at the previous position (at the beginning of line)
iPrint(sMyTitle) // Therefore MUST NOT be centered
// --- CASE 3: A single code line
// With <Immediate Calculation> set to True or to False,
// the result is the same
// The position of the print cursor is modified when
// running iXPos, and when printing the
// character string that contains the result returned by iXPos
iPrint(iXPos((iPageWidth() - iTextWidth(sMyTitle))/2, True) + sMyTitle)
// Must be centered
// The positioning is done twice: a little bit longer
// but the result is the expected one
// --- 3 B
// The position of print cursor IS NOT modified when
// running iXPos, BUT it is modified when
// printing the character string that contains the result
// returned by iXPos
iPrint(iXPos((iPageWidth() - iTextWidth(sMyTitle))/2, False) + sMyTitle)
// Must be centered
// End of print
iEndPrinting()

Combinación de posiciones

Cuando se combinan posiciones, pueden producirse resultados inesperados. Por ejemplo, el siguiente código:
iYPos(50)
iPrint("First Part" + iYPos(30) + "Second Part")
no es equivalente a:
iPrint(iYPos(50) + "First Part" + iYPos(30) + "Second Part")
En el primer caso, toda la cadena de caracteres se imprime en posición vertical 30. De hecho, en este caso, la función iYPos(30) se ejecuta al construir la cadena a imprimir y, antes de imprimir la cadena "Primera parte".
Para obtener un resultado idéntico, se debe utilizar la función iYPos con el parámetro False (en la primera sintaxis): iYPos( 30, False) se publicará durante la impresión.
La misma operación puede ser realizada por iXPos.
AndroidWidget Android

Impresión en Java y Android

Las impresiones pueden ser menos precisas porque la resolución de impresión es set a 72 puntos por pulgada (dpi), incluso si la impresora soporta resoluciones más altas.
Consecuencia: Los cálculos de puntos en las imágenes y en los dibujos (líneas, por ejemplo) se redondean durante los cálculos de posición al imprimir, especialmente para valores pequeños.. Durante la impresión, los cálculos se realizan en puntos (según la resolución de impresión) en lugar de mm (o cm).
Ejemplo: Líneas de impresión en Java: si el espacio entre las líneas es set a 0,5 mm, ¿cuántos puntos se encontrarán entre cada línea (resolución set a 72 ppp)?
La primera Line está posicionada a 0,5 mm, lo que significa (0,5/25,4) pulgadas con una resolución de 72 puntos por pulgada (ppp): (0.5/25.4) x 72 = 1.42 point. Siendo el punto la unidad base, no se puede dividir: el resultado se redondea automáticamente a 1 punto menos o mayor según el caso.
Esta es una sucesión de líneas impresas con un espaciado set a 05 mm:
  • 0,5 mm --> (1,42) 1 punto
  • 1,0 mm --> (2,84) 3 puntos
  • 1,5 mm --> (4,25) 4 puntos. Atención: el Line que se encuentra a 1,5 mm está pegado al Line que se encuentra a 1 mm (no hay espacio entre estos dos Line)
  • 2,0 mm --> (5,67) 6 puntos
  • 2,5 mm --> (7.09) 7 puntos. Atención: el Line que se encuentra a 2,5 mm está pegado al Line que se encuentra a 2 mm (no hay espacio entre estos dos Line)
  • 3,0 mm --> (8,50) 9 puntos
  • 3,5 mm --> (9,92) 10 puntos. Atención: el Line que se encuentra a 3,5 mm está pegado al Line que se encuentra a 3 mm (no hay espacio entre estos dos Line)
  • 4,0 mm --> (11,33) 11 puntos. Atención: el Line que se encuentra a 4 mm está pegado al Line que se encuentra a 3,5 mm (no hay espacio entre estos dos Line)
  • etc.
To obtener una representación adecuada (sin redondeo), el tamaño y/o la posición en mm para una resolución set a 72 ppp debe ser un múltiplo de 127/360.
1 punto --> (1/72) pulgadas --> (1/72) x 25,4 mm = 127/360 = 0,3527778 mm

Notas adicionales

La función iYPos no debe utilizarse en un parámetro de la función iPrintWord.
Componente: wd290prn.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 21/06/2023

Señalar un error o enviar una sugerencia | Ayuda local