RE:como imprimir msflexgrid
Hola Carlos, mira te mando un codigo que hice para imprmir flexos.
El modulo lo podes copiar tal cual esta cuando lo llamas le envias por parametro el Maflexgrid, la posicion Y donde empesara a imprimir, la cantidad de columnas del flexo y salto que es una variable no declarada en primer instancia. Cuando sale la primera vez trae un valor y te sirve a imprimir otro flexo debajo a una distancia determinada y asi arrastra un valor para imprimir uno debajod e otro.
' Rutina para imrimir
Private Sub Command5_Click()
Dim SalTo As Integer
ImpTabla Msfx1, 0, Msfx1.Cols, SalTo
Printer.Print vbCrLf
ImpTabla Msfx2, (SalTo + 400), Msfx2, SalTo
Printer.EndDoc
End Sub
Sub ImpTabla(Flexo As MSFlexGrid, PosY, Columnas, SalTo As Integer)
Dim Cantcol, y1, CantFil, x, y, x1, L As Integer
Dim MatAux() As Integer
CantFil = Flexo.Rows 'Controlo la cantidad de filas
'Retengo el alto de celda y calculo el alto total de la tabla
y = Flexo.CellHeight
y1 = y * CantFil
CantFil = 0
SalTo = y1
'Dibujo la tabla
x1 = 0
For x = 0 To Flexo.Cols
Printer.Line (x1, PosY)-Step(0, y1)
ReDim Preserve MatAux(x)
MatAux(x) = x1
If x < Columnas Then '12
x1 = x1 + Flexo.ColWidth(x)
Else
Printer.Line (x1 + Flexo.ColWidth(Columnas - 1), PosY)-Step(0, y1)
x1 = x1 + Flexo.ColWidth(Columnas - 1)
End If
Next x
L = PosY
'Imprimo los datos de la tabla
For y = 0 To Flexo.Rows - 1
For x = 0 To Columnas - 1
Printer.CurrentY = L
Printer.CurrentX = MatAux(x)
Printer.Print Flexo.TextMatrix(x, Columnas - 1)
Next x
L = L + Flexo.CellHeight
Next y
'Aca no me acuerdo que hice, por las dudas lo dejo
y1 = PosY
For x = 0 To Flexo.Rows
Printer.Line (0, y1)-Step(x1, 0)
y1 = y1 + Flexo.CellHeight
Next x
End Sub
Lo que hice fue manejarme con los controles de dibujo, asi voy dibujando la grilla, segun las dimenciones del flexo en la instancia de imprimir. Luego en una matriz me reservo la posicion de cada columna, para luego al imrimir las lineas de la fila imprimo tambien el texto o valor contenido en la celda.
Espero te sea de ayuda.
Saludos
Arnaldo.