USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  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


  

 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página