Resumen Funciones de ayuda para el objeto Print

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.



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com