|
|
|
|
|
Dicas
|
|
Visual Basic (Miscelâneas)
|
|
|
Título da Dica: Imprimir Flexgrid
|
|
|
|
Postada em 11/2/2004 por geronimo
Você deve criar um formulário de nome frm_impressao, o qual será adicionado em seu projeto para fazer a impressão dos dados de um flexgrid, o código abaixo deve ser inserido em um formulário e os comentários explicam como proceder:
'====================================================================================== 'Desenvolvido em 03/10/2001 'Desenvolvedor: Licardino Siqueira Pires 'Função:Imprimir um FlexGrid 'Parâmetros:nome do Formulário e do FlexGrid, Titulo do Relatório 'Deve-se declarar como público em um módulo as duas var. abaixo: 'Public Titulo As String 'Public Formulario As Object 'Public Orientacao as Integer 'Exemplo: Formulario.FlexGrid 'Como chamar o formulário de impressão 'nome do flexgrid onde estão os seus dados a serem impressos Set Formulario = GeralTela3.List1 'Titulo a aparecer no formulário Titulo = "RELAÇÃO DE DATAS DE CONTROLES DO RZ -- MES/ANO:" & Format(FrmRelacao.TxtMes, "00") & "/" & FrmRelacao.TxtAno 'pode se informar a orientação desejada '1 - R E T R A T O '2 - P A I S A G E M Orientacao = 1 'chamando formulario de impressao Frm_Impressao.Show 'Obs: No formulario frm_Impressao deve-se colocar um flexgrid com a propriedade 'name igual a List1. '====================================================================================== Public Sub Impressao() Dim Linhas As Long Dim Colunas As Double Dim Paginas As Double Dim LinhaInicial As Integer Dim LinhaLimite As Integer Dim LinhaImpressa As String Dim TAMANHO As Integer
If Formulario.Rows = 1 Then Exit Sub End If Linhas = Formulario.Rows - 1 Colunas = Formulario.Cols - 1 If Colunas <= 8 Or Orientacao = 1 Then 'If Frm_Impressao.List1.Width > 194 Then Paginas = CInt(Linhas / 56) Printer.Orientation = 1 LinhaInicial = 1 If Linhas < 56 Then LinhaLimite = Linhas Else LinhaLimite = 56 End If Else Paginas = CInt(Linhas / 41) Printer.Orientation = 2 LinhaInicial = 1 If Linhas < 41 Then LinhaLimite = Linhas Else LinhaLimite = 41 End If End If If Paginas = 0 Then Paginas = 1 End If For I = 1 To Paginas If I > 1 Then Printer.NewPage End If 'Cabecalho Frm_Impressao.List1.FormatString = Formulario.FormatString Frm_Impressao.List1.Rows = 1 For j = LinhaInicial To LinhaLimite LinhaImpressa = "" For Colun = 0 To Colunas LinhaImpressa = LinhaImpressa & Formulario.TextMatrix(j, Colun) & Chr(9) Next Colun LinhaImpressa = Mid(Trim(LinhaImpressa), 1, Len(Trim(LinhaImpressa)) - 1) Frm_Impressao.List1.AddItem LinhaImpressa Next j 'Controle das Linhas a Emitir If Colunas <= 8 Or Orientacao = 1 Then 'If Frm_Impressao.List1.Width > 194 Then Cabecalho_Retrato LinhaInicial = LinhaLimite + 1 If LinhaLimite + 56 > Linhas Then LinhaLimite = Linhas Else LinhaLimite = LinhaLimite + 56 End If Else Cabecalho_Paisagem LinhaInicial = LinhaLimite + 1 If LinhaLimite + 41 > Linhas Then LinhaLimite = Linhas Else LinhaLimite = LinhaLimite + 41 End If End If TAMANHO = Frm_Impressao.List1.Width Frm_Impressao.List1.Width = Printer.Width Printer.PaintPicture List1.Picture, 0, 700 Frm_Impressao.List1.Width = TAMANHO If LinhaInicial = Linhas Then Exit For End If Next I Printer.EndDoc Timer1.Enabled = False Unload Frm_Impressao End Sub
Private Sub Timer1_Timer() Impressao End Sub
Public Sub Cabecalho_Retrato() Printer.ScaleLeft = -500 Printer.Print Tab(8); " "; Printer.FontBold = True Printer.FontSize = 8 Printer.FontName = "Courier new" Printer.Print Tab(1); "SISTEMA DE IMPRESSÃO"; Tab(90); "PAGINA ... :" & Format$(Printer.Page, "000"); Printer.Print Tab(90); "DATA:" & Format$(Date, "DD/MM/YYYY"); Printer.Print Tab(1); Titulo; Tab(90); "HORA : " & Format$(Time, "hh:mm:ss"); Printer.FontName = "COURIER NEW" Printer.FontBold = False
End Sub
Public Sub Cabecalho_Paisagem() Printer.Print Tab(8); " "; Printer.FontBold = True Printer.FontSize = 8 Printer.FontName = "Courier new" Printer.Print Tab(1); "SISTEMA DE IMPRESSÃO"; Tab(110); "PAGINA ... :" & Format$(Printer.Page, "000"); Printer.Print Tab(110); "DATA:" & Format$(Date, "DD/MM/YYYY"); Printer.Print Tab(1); Titulo; Tab(110); "HORA : " & Format$(Time, "hh:mm:ss"); Printer.FontName = "COURIER NEW" Printer.FontBold = False
End Sub
|
|
|
|
|