comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

como imprimir un Flexgrid

  • 0 Respuestas
  • 2295 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5320
  • Actividad:
    41.67%
  • Reputación 29
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« en: Julio 26, 2010, 10:54:50 am »
Bueno en forma de pensar esta es una de las manera, puesto que imprime un grid tal como se, tipo hoja de excel,(no lo habia publicado porque no lo habia encontrado.)

Código: Visual Basic
  1. '**************************************
  2. ' Formatear e impremir un MSFLEXIGRID
  3. ' Entrada el FlexiGrid que quiere imprimir
  4. ' No retorna nada
  5. '************************************
  6.  
  7.  
  8. Sub PrintGrid(pGrid As MSFlexGrid, sTitulo As String, pHorizontal As Boolean)
  9. ' pGrid = El Gri a imprimir
  10. ' sTitulo = El título de la página
  11. ' pHorizontal = True para imprimir página invertida
  12.  
  13. On Error GoTo ErrorImpresion
  14. Dim i As Integer
  15. Dim iMaxRow As Integer
  16. Dim j As Integer
  17. Dim msfGrid As MSFlexGrid
  18. Dim iPaginas As Integer
  19. Printer.ColorMode = vbPRCMMonochrome
  20. Printer.PrintQuality = 160
  21.  
  22.  
  23. Set msfGrid = fMainForm.MSFlexGrid1
  24. msfGrid.FixedCols = 0
  25. msfGrid.Clear
  26.  
  27.  
  28. If pHorizontal = True Then
  29. Printer.Orientation = vbPRORLandscape
  30. iMaxRow = 44
  31. Else
  32. Printer.Orientation = vbPRORPortrait
  33. iMaxRow = 57
  34. End If
  35.  
  36. ' calcula el número de páginas
  37.  
  38.  
  39. If pGrid.Rows Mod iMaxRow = 0 Then
  40. iPaginas = pGrid.Rows \ iMaxRow
  41. Else
  42. iPaginas = pGrid.Rows \ iMaxRow + 1
  43. End If
  44. msfGrid.Rows = iMaxRow
  45. msfGrid.Cols = pGrid.Cols
  46.  
  47.  
  48. For i = 0 To pGrid.Cols - 1
  49. msfGrid.ColWidth(i) = pGrid.ColWidth(i)
  50. Next
  51.  
  52. ' impresion de un logo o de una imagen que Vd. quiera
  53.  
  54. Printer.PaintPicture fMainForm.ImageList1.ListImages(1).Picture, 0, 0, 4300, 600
  55. ' imprime título
  56. Printer.CurrentY = 650
  57. Printer.FontName = "Courier New"
  58. Printer.FontBold = True
  59. Printer.FontSize = 12
  60. Printer.Print sTitulo
  61. Printer.Print
  62. ' justifica a la derecha fecha de impresión
  63.  
  64.  
  65.  
  66. If pHorizontal = True Then
  67. Printer.CurrentX = 10000
  68. Else
  69. Printer.CurrentX = 7000
  70. End If
  71. Printer.CurrentY = 0
  72. Printer.FontSize = 10
  73. Printer.Print Now & " - Pág 1 de " & iPaginas
  74.  
  75.  
  76. For i = 0 To pGrid.Rows - 2 + iPaginas
  77.  
  78.  
  79. If i Mod iMaxRow = 0 And i > 0 Then
  80.  
  81.  
  82. With msfGrid
  83. .Row = 0
  84. .Col = 0
  85. .ColSel = 0
  86. .RowSel = 0
  87.  
  88.  
  89. If pHorizontal Then
  90. Printer.PaintPicture .Picture, 20, 1250, 15000, 10350
  91. Else
  92. Printer.PaintPicture .Picture, 20, 1250, 11400, 13950
  93. End If
  94. End With
  95. Printer.NewPage
  96. msfGrid.Clear
  97.  
  98.  
  99. For j = 0 To msfGrid.Cols - 1
  100. ' restablece títulos
  101. msfGrid.TextMatrix(0, j) = pGrid.TextMatrix(0, j)
  102. Next
  103. ' print logo
  104. Printer.PaintPicture fMainForm.ImageList1.ListImages(23).Picture, 0, 0, 4300, 600
  105. Printer.CurrentY = 650
  106. Printer.FontSize = 12
  107. Printer.Print sTitulo
  108. Printer.Print
  109. ' justifica a la derecha fecha de impres
  110. ' ión
  111.  
  112.  
  113. If pHorizontal = True Then
  114. Printer.CurrentX = 10000
  115. Else
  116. Printer.CurrentX = 7000
  117. End If
  118. Printer.CurrentY = 0
  119. Printer.FontSize = 10
  120. Printer.Print Now & " - Pág " & i \ iMaxRow + 1 & " de " & iPaginas
  121. i = i + 1 ' deja títulos
  122. End If
  123.  
  124.  
  125. For j = 0 To msfGrid.Cols - 1
  126. msfGrid.TextMatrix(i Mod iMaxRow, j) = pGrid.TextMatrix(i - i \ iMaxRow, j)
  127. Next
  128. Next
  129.  
  130.  
  131. With msfGrid
  132. .Row = 0
  133. .Col = 0
  134. .ColSel = 0
  135. .RowSel = 0
  136.  
  137.  
  138. If pHorizontal Then
  139. Printer.PaintPicture .Picture, 20, 1250, 15000, 10350
  140. Else
  141. Printer.PaintPicture .Picture, 20, 1250, 11400, 13950
  142. End If
  143. End With
  144. Printer.EndDoc
  145. MsgBox sTitulo & vbCrLf & "Se ha(n) enviado " & iPaginas & " página(s) a la impresora " & Printer.DeviceName, vbInformation, Printer.Port
  146.  
  147. salir:
  148. Set msfGrid = Nothing
  149. Exit Sub
  150. ErrorImpresion:
  151. Printer.KillDoc
  152. MsgBox "Compruebe la impresora", vbCritical, "Printer Error"
  153. Resume salir
  154. End Sub

este ejemplo usa dos Grid's uno donde esta imformación y otro donde va imprimiendo hoja tras hoja, tipo excel, lo recomiendo mucho puesto que es muy estético..
« Última modificación: Julio 08, 2011, 10:09:12 am por ANTRAX »


 

¿Te gustó el post? COMPARTILO!



Como leer caracter por caracter de una cadena string

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1328
Último mensaje Julio 26, 2010, 11:42:21 am
por ANTRAX
Cómo ajustar la cadena introducida a formato de hora "00:00:00"

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1418
Último mensaje Julio 26, 2010, 12:36:23 pm
por ANTRAX
Cómo ajustar la cadena introducida a formato numérico: "#,##"

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1111
Último mensaje Julio 26, 2010, 12:38:04 pm
por ANTRAX
Manual de como bloquear CTRL+ALT+SUP, ALT+TAB, Y OTROS con Visual Basic en WinXP

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1748
Último mensaje Julio 26, 2010, 11:11:14 am
por ANTRAX
Llamada de un formulario mediante el nombre como string

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1218
Último mensaje Julio 26, 2010, 04:08:58 pm
por ANTRAX