Fraguibo, descarga la última versión del foro de Novedades y puedes probar la justificación de los campos memo, su uso es el siguiente:
- el contenido del texto debe ser estar seguido, párrafos completos, los saltos de línea separan los párrafos.
Código:
cTexto := "Texto que se debe imprimir en un espacio determinado y justificado. Todo el texto debe estar seguido ya que las líneas se calcularán en función del recuadro a justificar."
- usamos el método SplitText del objeto Printer y le indicamos la achura deseada en milímetros, nos devuelve un array de las líneas ya ajustadas:
Código:
aLineas := Printer:SplitText( cTexto, 150 ) // 15 centímetros de ancho
- Mostramos todas las líneas del array menos la última justificadas:
Código:
nLinea := 10 // empezamos a un centímetro de altura de la hoja
for nI := 1 to Len( aLineas )
Printer:DrawText( aLineas[ nI ], { 10, nLinea, 160, nLinea + 10 }, TA_JUSTIFY )
nLinea += 5 // aumentamos el interlineado en medio centímetro
next
- Mostramos la última línea del párrafo justificada a la izquierda:
Código:
Printer:DrawText( ATail( aLineas), { 10, nLinea, 160, nLinea + 10 }, TA_LEFT )
El contenido de la variable cTexto no se modifica, se devuelven copias de las líneas ajustadas a la achura especificada. Repetimos el proceso por cada párrafo que queramos justificar. Dependiendo de la fuente seleccionada el número de líneas calculadas variará.