Alinear texto en VB con Printer

Como puedo alinear texto con el objeto printer es decir
Printer. Print "hola"
Printer. Print "como estas"
Necesito que al imprimir con la impresora tengan el mismo ancho, osea que aparezca así
h o l a
Como estas
Respuesta
1
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) valido
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.

3 respuestas más de otros expertos

Respuesta
Solamente lo puedes hacer a mano, el printer no maneja formateo de textos, maneja posiciones mediante coordenadas.
En la siguiente liga:
http://www.planetsourcecode.com/vb
Localizas una aplicación que trabaja reportes en word.
Respuesta
-1
No entiendo muy bien tu pregunta. Si te refieres a imprimir las letras separadas, me temo que tendrás que hacerlo a mano, a no ser que haya alguna librería que lo haga ( y yo desconozca ).
Respuesta
-1
Disculpa que tarde tanto en responderte, lo que pasa es que estoy con mucho trabajo y casi no puedo conectarme para responder las preguntas.
En este momento no te puedo ayudar, pero preguntales a los expertos de más arriba, decile que vas de parte mía y te responden lo más bien.
De nuevo disculpame.
Suerte!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas