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...