Mensaje enviado por "dezalot" <dezalot@tucbbs.com.ar> el 315/04/2002
Martin
Te mando estas funciones que utilizo para simplificar el tema de imprimir en Visual Basic, el que debes tenerlo en un módulo BAS
SetPos, te resuelve el problema de posicionar y alinear, pasando unicamente cuatro parámetros, X, Y, Alineacion y Texto a imprimir.
SetPrinter, para cuando necesitas cambiar, la configuracion de la letra, tamaños, negrita, italica, subrayada y color.
Justificado, complementa la opcion 3 relacionada con la Alineacion que pide el SetPos.
Limitar, Cuando deseas limitar la Longitud de una cadena, a un espacio predeterminado (Ej: a una columna)
Como ejemplo para imprimir: en "Times New Roman", tamaño 10, sin negrita, con italica, sin subrayado, en color azul
SetPrinter "Times New Roman", 10, False, True, False, QBColor(1)
Como ejemplo para indicarle que en la coordenada X, 1000, a la mitad del ancho de pagina, en forma centrada, imprimir titulo
SetPos 1000, printer.textwidht/2, 2 ,"TITULO"
SetPos 1000, 3000, 0, Limitar(VarString, 1250)
SetPos 1000, 2000, 3, VarString
Espero te sirva.
Saludos
Dante Dezalot
Tucumán Argentina
Public Function SetPos(nFila1 As Integer, nColumna1 As Integer, nAlinear1 As Byte, ByVal cTexto1 As Variant)
Dim cTexto2 As String
If IsNull(cTexto1) Then
Exit Function
End If
Printer.CurrentY = nFila1
Select Case nAlinear1
Case 1
Printer.CurrentX = nColumna1 - Printer.TextWidth(cTexto1)
Case 2
Printer.CurrentX = nColumna1 - Int(Printer.TextWidth(cTexto1) / 2)
Case 3
Printer.CurrentX = nColumna1
cTexto2 = cTexto1
cTexto1 = Justificado(cTexto2, 0)
Case Else
Printer.CurrentX = nColumna1
End Select
Printer.Print cTexto1
End Function
Public Function SetPrinter(Optional cLetra1 As String = "Arial", Optional nMedida1 As Integer = 10, Optional lResaltado1 As Boolean = False, Optional lItalica1 As Boolean = False, Optional lSubrayado1 As Boolean = False, Optional cColor1 As Variant)
If VarType(cLetra1) = vbString Then
If Len(cLetra1) > 0 Then
Printer.Font = cLetra1
End If
End If
If VarType(nMedida1) = vbInteger Then
If nMedida1 > 0 Then
Printer.FontSize = nMedida1
End If
End If
If VarType(lResaltado1) = vbBoolean Then
Printer.FontBold = lResaltado1
End If
If VarType(lItalica1) = vbBoolean Then
Printer.FontItalic = lItalica1
End If
If Not IsNull(lSubrayado1) And VarType(lSubrayado1) = vbBoolean Then
Printer.FontUnderline = lSubrayado1
End If
If Not IsNull(cColor1) Then
Printer.ForeColor = cColor1
End If
End Function
Public Function Justificado(cTexto1 As String, nLongitud1 As Integer) As String
Dim X As Integer
Dim cChar1 As String
Dim nPos1 As Integer
Dim nMarca1 As Byte
nMarca1 = 0
For X = 1 To Len(cTexto1)
cChar1 = Mid(cTexto1, X, 1)
If Asc(cChar1) <> 32 Then
nMarca1 = 1
End If
If nMarca1 = 1 Then
If cChar1 = " " Then
If Printer.TextWidth(Mid(cTexto1, 1, X)) + Printer.TextWidth(" ") <= nLongitud1 Then
cTexto1 = Mid(cTexto1, 1, X) & " " & Mid(cTexto1, X + 1, Len(cTexto1) - X)
X = X + 2
End If
End If
End If
If nLongitud1 > 0 And Printer.TextWidth(cTexto1) > nLongitud1 Then
Exit For
End If
Next X
Justificado = cTexto1
End Function
'nLargo1, tener en cuenta la unidad de medida usada, Pixel, Twips, Cm, etc
Public Function Limitar(cTexto1 As String, nLargo1 As Integer) As String
Dim cTexto2 As String
Dim cLetra1 As String
Dim nLargo2 As Integer
Dim X As Integer
nLargo2 = Len(cTexto1)
For X = 1 To nLargo2
cLetra1 = Mid(cTexto1, X, 1)
If Printer.TextWidth(cTexto2 & cLetra1) > nLargo1 Then
Exit For
End If
cTexto2 = cTexto2 & cLetra1
Next X
Limitar = cTexto2
End Function
----- Mensaje original -----
De: Servicios
Para: visualbasic-esp@yahoogroups.com
Enviado: Lunes, 15 de Abril de 2002 11:23 a.m.
Asunto: (VB-ESP) Impresion, que quilomb.....!!.
Hola Gente!
Queria preguntarles si saben donde puedo conseguir info sobre la impresion en VB o algun ejempliyo, he visto que se utiliza el objeto printer y tiene un monton de eventos y metodos, pero el tema es que en la impresion debo especificar las coordenadas de X,Y.
O sea :
Yo tengo un papel en el cual tengo que imprimir datos....nombre, apellido, etc...
Como se yo exactamente cual es la posicion de un campo Nombre en el´papel , como para indicarle a la impresora: parate en X(15) Y(25) e imprimi el nombre, ahora parate en X() Y() e imprimi el apellido, etc...me explico ??
Espero puedan ayudarme.
Mil Gracias !!!
Saludos.
Martin.