Cómo imprimir un MSFLEXGRID

  • 0 Respuestas
  • 2488 Vistas

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

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5701
  • Actividad:
    100%
  • Country: ar
  • Reputación 37
  • ANTRAX
  • Skype: underc0de.org
  • Twitter: @Underc0de
    • Ver Perfil
    • Underc0de
    • Email

Cómo imprimir un MSFLEXGRID

  • en: Julio 26, 2010, 10:53:14 am
Código: Visual Basic
  1. Public Sub MSHFG_Print(ByVal gri As Control, cabecer As String, peu As String)
  2. Set grid = gri
  3. ReDim dimen(grid.Cols)
  4. If grid.Rows = 1 Then Exit Sub
  5. 'Agafo l'amplada del grid total a imprimir
  6. ample = 0
  7. For x = 0 To grid.Cols - 1
  8. grid.Col = x
  9. If grid.CellWidth > 20 Then
  10. If grid.CellWidth < 200 Then grid.ColWidth(x) = 200
  11. ample = grid.CellWidth + ample
  12. End If
  13. dimen(x) = grid.CellWidth
  14. Next x
  15. grid.LeftCol = 1
  16. 'ja tinc el ample a imprimir
  17. tppx = Printer.TwipsPerPixelX
  18. tppy = Printer.TwipsPerPixelY
  19. cabecera = cabecer
  20. pie = peu
  21. x0 = (Printer.ScaleWidth - ample) / 2
  22. y0 = (Printer.Height - Printer.ScaleHeight) / 2
  23. y1 = y0
  24. Printer.CurrentY = y1
  25. grid.Col = 0
  26. grid.Row = 0
  27. For Row = 0 To grid.Rows - 1
  28. If Row = 0 Then PosCapMSHFG
  29. 'faig la ultima linea del grid si ha acabat sense cuadricular
  30. If Printer.ScaleHeight - 1500 < y1 Then 'finalitzo pag i poso capçelera.
  31. If cuadro = True Then Printer.Line (x0, y1)-(x0 + ample, y1), vbBlack, B
  32. Printer.CurrentY = Printer.ScaleHeight - 500
  33. Printer.CurrentX = x0
  34. Printer.Print pie
  35. Printer.CurrentX = Printer.ScaleWidth - 1000
  36. Printer.Print "Pág " & Printer.Page
  37. Printer.NewPage
  38. PosCapMSHFG
  39. End If
  40. ImpLinMSHFG
  41.  
  42. Next
  43. 'faig la ultima linea del grid si ha acabat sense cuadricular
  44. If cuadro = True Then Printer.Line (x0, y1)-(x0 + ample, y1), vbBlack, B
  45. Printer.CurrentY = Printer.ScaleHeight - 500
  46. Printer.CurrentX = x0
  47. Printer.Print pie
  48. Printer.CurrentX = Printer.ScaleWidth - 1000
  49. Printer.Print "Pág " & Printer.Page
  50. Printer.EndDoc
  51. End Sub
  52.  
  53.  
  54. Private Sub ImpLinMSHFG()
  55. alt = grid.RowHeight(Row)
  56.  
  57. Printer.FillStyle = 1 'solido 0
  58. Printer.CurrentX = x0
  59. Printer.CurrentY = y1 'printer.CurrentY - tppy
  60. If cuadro Then
  61. Printer.Line -Step(ample + tppx, alt + tppy), vbBlack, B
  62. Else
  63. Printer.Line (x0 + ample, y1)-(x0 + ample, y1 + alt + tppy), vbBlack, B
  64. End If
  65. cuadro = Not cuadro
  66. For Col = 0 To grid.Cols - 1
  67. If Col = 0 Then
  68. x1 = x0 'COMENÇO PER L'ESQUERRA
  69. 'alt = printer.FontSize * tppy * 5
  70. Else
  71. x1 = x1 + dimen(Col - 1)
  72. End If
  73. If dimen(Col) < 20 Then Col = Col + 1
  74. If dimen(Col) > 20 Then
  75. Printer.CurrentX = x1 + tppx
  76. Printer.CurrentY = y1 '+ tppy
  77. Printer.Line (x1, y1 + tppy)-(x1, alt + y1 - tppy), vbBlack, B
  78. Printer.CurrentX = x1 + 30 / tppx
  79. Printer.CurrentY = y1 '+ tppy
  80. texte = grid.TextArray(grid.Cols * Row + Col)
  81. Do While Printer.TextWidth(texte) > dimen(Col) And Len(texte) > 0
  82. texte = Left(texte, Len(texte) - 1)
  83. punts = True
  84. Loop
  85. If punts = True And Len(texte) > 0 Then texte = Left(texte, Len(texte) - 2) & "..."
  86. punts = False
  87. If grid.ColAlignment(Col) > 5 Then Printer.CurrentX = Printer.CurrentX + dimen(Col) - Printer.TextWidth(texte) - 30 / tppx
  88. If grid.ColAlignment(Col) >= 3 And grid.ColAlignment(Col) <= 5 Then Printer.CurrentX = Printer.CurrentX + (dimen(Col) - Printer.TextWidth(texte)) / 2
  89.  
  90. Printer.Print texte
  91. End If
  92. Next
  93. y1 = y1 + grid.RowHeight(Row) '- tppy 'y + alto de la fila actual
  94.  
  95. End Sub
  96.  
  97. Public Sub PosCapMSHFG()
  98. Printer.CurrentY = y0
  99. Printer.FontSize = 20
  100. Printer.ForeColor = vbBlue
  101. Printer.FontBold = True
  102. Printer.CurrentX = (Printer.Width - Printer.ScaleWidth) + (Printer.ScaleWidth - Printer.TextWidth(cabecera)) / 2
  103. Printer.Print cabecera
  104. Printer.FontSize = 8.25
  105. Printer.ForeColor = vbBlack
  106. Printer.FontBold = False
  107. y1 = Printer.CurrentY + 300 'separaciò amb el titol
  108. 'Row = trow
  109. 'grid.Row = Row
  110. 'grid.Col = 0
  111. For Col = 0 To grid.Cols - 1
  112. 'grid.Col = Col
  113. If Col = 0 Then
  114. x1 = x0 'COMENÇO PER L'ESQUERRA
  115. 'alt = printer.FontSize * tppy * 5
  116. Else
  117. x1 = x1 + dimen(Col - 1)
  118. End If
  119. If dimen(Col) < 20 Then Col = Col + 1
  120. 'If grid.Col = 9 Or grid.Col = 11 Then x1 = x1 + 400
  121. 'grid.Col = Col
  122. If dimen(Col) > 20 Then
  123. Printer.CurrentX = x1 + tppx
  124. Printer.CurrentY = y1 '+ tppy
  125. Printer.Line (x1, y1 + tppy)-(x1, alt + y1 - tppy), vbBlack, B
  126. Printer.CurrentX = x1 + 15 / tppx
  127. Printer.CurrentY = y1 '+ tppy
  128. texte = grid.TextArray(Col)
  129. Do While Printer.TextWidth(texte & "...") > dimen(Col) And Len(texte) > 0
  130. texte = Left(texte, Len(texte) - 1)
  131. punts = True
  132. Loop
  133. If punts = True And Len(texte) > 0 Then texte = Left(texte, Len(texte) - 2) & "..."
  134. punts = False
  135. Printer.CurrentX = Printer.CurrentX + (dimen(Col) - Printer.TextWidth(texte)) / 2
  136. Printer.Print texte
  137. End If
  138. Next
  139. y1 = y1 + grid.RowHeight(Row) '- tppy 'y + alto de la fila actual
  140. cuadro = True
  141. If Row = 0 Then Row = 1
  142.  
  143. End Sub
« Última modificación: Julio 08, 2011, 10:08:57 am por ANTRAX »


 

Como leer caracter por caracter de una cadena string

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2553
Último mensaje Julio 26, 2010, 11:42:21 am
por ANTRAX
Cómo ajustar la cadena introducida a formato numérico: "#,##"

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2238
Último mensaje Julio 26, 2010, 12:38:04 pm
por ANTRAX
Cómo ajustar la cadena introducida a formato de hora "00:00:00"

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2596
Último mensaje Julio 26, 2010, 12:36:23 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: 2981
Último mensaje Julio 26, 2010, 11:11:14 am
por ANTRAX
Como pasar de un texto a otro usando Enter

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2481
Último mensaje Julio 26, 2010, 10:28:10 am
por ANTRAX