Ver Mensaje Individual
  #7 (permalink)  
Antiguo 15-05-2008, 19:45:18
Avatar de J.M.Movilla
J.M.Movilla J.M.Movilla is offline
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.256
J.M.Movilla Valoración +2
Predeterminado Re: Imprimir Grillas con Printer

Código:
Private Sub CmdImprimirPeriodos_Click()
    Dim Fila As Integer, ContarFila As Integer, nIncrem As Single

    'Papel Tamaño Carta = 21.59 x 27.94 Centimetros = 2550 x 3300 pixels
  
    'Imprimimos la hoja en forma Horizontal
    Printer.Orientation = vbPRORPortrait '2 Orientación Horizontal vbPRORLandscape '1 Horientación Vertical "vbPRORPortrait"
    Printer.ScaleMode = vbCentimeters 'Ponemos la Escala en Centimetros
    'Margenes
    HorizontalMargen = (21.59 - Printer.ScaleWidth) / 2 + 0.1
    VerticalMargen = (27.94 - Printer.ScaleHeight) / 2 + 0.1 + 4
    nIncrem = 0.6
  
    'Imprimimos la Grilla
     '---------------------------------------------------------------------------------------
    'imprimimos los datos de la grilla
    
    EncabezadoGrilla 'imprimimos el encabezado
    'Cargamos nuevas fuentes y tamaños para la grilla
    Printer.Font = "Verdana"
    Printer.FontSize = 8
    Printer.ForeColor = vbBlue
    Printer.FontBold = False
        
    ContarFila = 1
        
    For Fila = 1 To (Me.GrillaPeriodos.Rows - 1)
        Printer.CurrentY = VerticalMargen + (ContarFila - 1) * nIncrem

        'Columna 0 Meses
        Printer.CurrentX = HorizontalMargen + ((3.5 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 0))) / 2)
        Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 0)

        'Columna 1 Numero de Periodo
        Printer.CurrentX = 3.5 + HorizontalMargen + ((2 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 1))) / 2)
        Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 1)

        'Columna 2 Dias a Pagar
        Printer.CurrentX = 5.5 + HorizontalMargen + ((2 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 2))) / 2)
        Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 2)

        'Columna 3 Fecha en que inicia el Periodo
        Printer.CurrentX = 7.5 + HorizontalMargen + ((3.5 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 3))) / 2)
        Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 3)

        'Columna 4 Fecha en que Termina el Periodo
        Printer.CurrentX = 11 + HorizontalMargen + ((3.5 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 4))) / 2)
        Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 4)

        'Columna 5 Partes de un Mes
        Printer.CurrentX = 14.5 + HorizontalMargen + ((2 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 5))) / 2)
        Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 5)

        'Columna 6 Status Activo o Inactivo
        Printer.CurrentX = 16.5 + HorizontalMargen + ((3 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 6))) / 2)
        Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 6)

        ContarFila = ContarFila + 1

        If ContarFila > 37 Then
            Printer.NewPage 'Llamamos otra pagina
            EncabezadoGrilla 'imprimimos nuevamente el encabezado
            ContarFila = 1
        End If
    Next Fila
        
    ' No sé si el siguiente mensaje se presenta adecuadamente tal como le pones...
    MsgBox "Las Tablas que se Generaron se Estan Imprimiendo en la Impresora:" & vbCrLf & " " & Printer.DeviceName, vbInformation, "Imprimiendo Tablas" 'Printer.Port & "Imprimiendo"
    
    'Final de la impresión
    Printer.EndDoc
  
End Sub
Como ves, no es necesario definir el "CurrentY" para cada columna. Vale con que le definas una vez para toda la fila.

Y, aunque no sea indispensable, verás también que merece la pena cuidar la presentación del código.

Por otra parte, me da la impresión de que estás manejando variables que no has definido. Si te acostumbrases a poner "Option Explicit" como primera línea de todos tus formularios... evitarías esos posibles errores.

Y lo más importante: Ojalá ahora te funcione !!!
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion

Última edición por J.M.Movilla fecha: 15-05-2008 a las 19:51:44.
Responder Con Cita