Justificar Texto en Visual Basic 5.0

Quisiera saber como puedo justificar texto al imprimir con:
Printer. Print "Como puedo justificar este texto"
Necesito que el texto quede alineado en ambos costados.

3 Respuestas

Respuesta
1
Si lo que quieres es manejar el punto de impresión utiliza las propiedades de
Printer: CurrentX y CurrentY. Pero si lo que quieres es obtener lo márgenes mínimos o predeterminados de la impresora por defecto (para calcular el tamaño del area imprimible) tienes dos posibilidades:
1.-Con objeto Printer
'Márgen predeterminado superior en twips (1 cm = 566'9 twips)
Public Function TopOffset() As Long
TopOffset = (Printer.Height - Printer.ScaleHeight)
End Function
'Margen predeterminado izquierdo en twips
Public Function LeftOffset()
LeftOffset = (Printer.Width - Printer.ScaleWidth)
End Function
'Los margenes derecho= izquierdo, inferior=superior
2.- Mediante API
'*****************Declaraciones de Módulo*****************************
Declare Function GetDeviceCaps Lib "gdi32" _
(ByVal hDC As Long, ByVal nIndex As Long) As Long
'Margen X del área física imprimible
Const PHYSICALOFFSETX As Long = 112
'Margen Y del área física imprimible
Const PHYSICALOFFSETY As Long = 113
'*****************Function o Sub******************************************
Dim LeftOffset As Long, TopOffset As Long
' Iniciar un trabajo de impresión para obtener un Printer.hDC) válido
Printer.Print Space(1)
Printer.ScaleMode = vbTwips
' Obtener el desplazamiento del area imprimible de la página en twips
LeftOffset = Printer.ScaleX(GetDeviceCaps(Printer.hDC, _
PHYSICALOFFSETX), vbPixels, vbTwips)
TopOffset = Printer.ScaleY(GetDeviceCaps(Printer.hDC, _
PHYSICALOFFSETY), vbPixels, vbTwips)
Para ajustar exactamente la etiqueta, debes calcularla a partir de los márgenes predeterminados y después usar CurrentX y CurrentY, sabiendo :
1.- Que éstas comienzan en 0 a partir de las cifras dadas por dichos márgenes,
es decir, si el margen izquierdo predeterminado es 280 twips, ese punto coincide con Printer. CurrentX=0.
2.- Que CurrentX debe especificarse por cada línea de texto
3.- Que la longitud de cada línea se puede calcular con :
Printer. TextWidth(sCadTrabajo) y cortandola con salto de carro vbCrLf si es necesario. Y la altura se calcula con Printer. TextHeight("A"). Las cifras resultantes se refieren a la fuente y tamaño seleccionadas con Printer. Font. Name y Printer. Font. Size.
4.- Que es mejor ajustar distancias de margenes y separaciones de etiquetas con espacios que con tabuladores. La longitud de un espacio se calcula con Printer. TextWidth(" "). El número de espacios necesarios para obtener un margen o una separación será: LongitudDeseada/ Printer. TextWidth(" ")
5.- Que aunque el salto de línea se hace automáticamente con vbCrLf con un promedio de la altura de la fuente, también se debe especificar CurrentY por línea en caso de que quieras distancias verticales especiales.
Respuesta
1
Casi nunca lo justifico porque siempre trabaje con la regla y siempre hago que quede en el medio
Uso esto para alinear un importe por ahí lo podes utilizar
printery = y
printerx = x - printerwidth(variable o campo)
Printer. Print campo
Printerwidt no me acuerdo como se escribe, pero es algo asi.
Para usar el objeto printer necesitas tener mucho ojo o hacer todo con la regla, (yo uso la regla).
Lo otro es
Printer.CurrentY = Y
Printer.CurrentX = 25 - Printer.TextWidth(Format(rs!importe, "##0.00"))
Printer.Print Format(rs!importe, "##0.00")
En la posición Y
Y en la posición POR con textwidth lo alineas a la derecha después lo mandas a imprimir.
Lo tienes que probar para ser más gráfico
Respuesta
Lo que se me ocurre es que trabajes en forma oculta una instancia de word, a la que mandas todo tu reporte y al final lo formateas, lo imprimes y debe de quedar como lo deseas.
Checa la página de http://www.planetsourcecode.com/vb ahí esta una aplicación para emitir reportes en word.
La verdad es que no me sirvió de mucho, de todas formas gracias.
Saludos
Con el objeto printer lo tienes que realizar a mano. No existe otra forma.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas