Imprimindo o conteúdo de um controle ListView
Neste artigo vamos mostra como imprimir o conteúdo de um controle ListView. Vamos apenas nos ater na rotina de impressão , se você quiser saber mais sobre o controle ListView leia :
A função para imprimir o ListView é dada abaixo.
Public Sub PrintListView(LV As ListView, Lines%) Dim i%, LVWidth%, NewTab%, j% Dim itmX As ListItem Dim ContaLinha% LVWidth = 0 For i = 1 To LV.ColumnHeaders.Count LVWidth = LVWidth + LV.ColumnHeaders(i).Width Next NewTab = 0 'imprime o cabeçalho For i = 1 To LV.ColumnHeaders.Count NewTab = NewTab + CInt(LV.ColumnHeaders(i).Width * Printer.ScaleWidth / LVWidth) Printer.Print LV.ColumnHeaders(i).Text; Printer.CurrentX = NewTab Next 'imprime uma linha de separação Printer.Print imprime_linha Printer.Print 'se o numero de linhas do ListView for maior que o de linhas a 'a imprimir então imprime o conteúdo total de Listview If Lines < LV.ListItems.Count And Lines <> 0 Then ContaLinha = Lines Else ContaLinha = LV.ListItems.Count End If 'imprime os itens e subitens For i = 1 To ContaLinha NewTab = 0 Set itmX = LV.ListItems(i) Printer.Print itmX.Text; For j = 1 To LV.ColumnHeaders.Count - 1 NewTab = NewTab + CInt(LV.ColumnHeaders(j).Width * Printer.ScaleWidth / LVWidth) Printer.CurrentX = NewTab Printer.Print itmX.SubItems(j); Next Printer.Print Next 'envia os dados para impressora Printer.EndDoc End Sub |
Você chama a função PrintListView passando como parãmetros o nome do controle ListView e o número de linhas a imprimir. Se o número de linhas informado for maior que o numero de linhas do controle ListView , então imprime o contéudo total do ListView. Exemplo: para imprimir 10 linhas do controle Listview1 chamamos a função assim:
Call PrintListView(ListView1 , 10 )
Usamos também a rotina para imprimir uma linha de separação para o cabeçalho :
Private Sub imprime_linha() Dim linha As String linha = "-" Printer.CurrentX = 0 While Printer.CurrentX + Printer.TextWidth(linha) <= Printer.ScaleWidth Printer.Print linha; Wend End Sub |
Para ilustrar temos abaixo a tela de um projeto exemplo que usa a função . No código o número de linhas a imprimir esta fixo (10 linhas) apenas para mostrar que a rotina funciona. Você pode expandir e melhorar o código usando o seu talento nato...
Clique aqui para pegar o código completo do exemplo acima: Imprimindo ListView.
Até mais...