Jump to content

Imprimir conteúdo do item da listbox


metaclay
 Share

Go to solution Solved by metaclay,

Recommended Posts

Boas. Estou a desenvolver uma aplicação em que o objectivo é carregar os ficheiros duma pasta à escolha para uma listbox para que possa imprimir o item selecionado dessa listbox. O problema que estou a confrontar é a básica propriedade da seleçao do item.

Em suma, quero imprimir o item selecionado da listbox mas nao sei qual é a propriedade para selecionar o item que quero.

Código que tenho até agora:

- Carregamento dos documentos da pasta

Private Sub btn_carregardados_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_carregar.Click
        Dim dir As New IO.DirectoryInfo("c:\dossier")

        Label1.Text = dir.ToString

        Dim files As IO.FileInfo() = dir.GetFiles("*.txt")

        Dim fileName As IO.FileInfo
        For Each fileName In files
            ListBox1.Items.Add(fileName.Name)
        Next


    End Sub

- Parte da impressao

Dim i As Integer
       
        For i = 1 To ListBox1.Items.Count  ' Percorrer todos os items'
            
            If ListBox1.Items(i).Checked = True Then 'Aqui é a parte que quero saber qual a propriedade para trabalhar com o item selecionado '
                PrintDocument1.Print()
            End If
        Next

Aguardo ajuda

Link to comment
Share on other sites

Para obteres o Indice do Item selecionado não carece cclo de pequisa, usa a propriedade SelectedIndex

Convém saber que o 1º item =0 e o último é [items.Count - 1, e para obter o valor do item Items(Index)

A ListBox só permite selecionar um item de cada vez, já para selecionar vários usa a CheckedListBox e para mais que uma coluna existe a ListView.

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

O problema que estou a confrontar é a básica propriedade da seleçao do item.

Em suma, quero imprimir o item selecionado da listbox mas nao sei qual é a propriedade para selecionar o item que quero.

Para seleccionar e, exibir o nome do item seleccionado, pode-se fazer algo do género:

Private Sub btnImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImprimir.Click

        MsgBox("Seleccionou o item: " & ListBox1.SelectedItem)

    End Sub
Link to comment
Share on other sites

Acho que vocês nao perceberam o que eu quero. Vou tentar explicar outra vez duma forma mais simplificada...

Desde já, deixo um print screen da aplicação

http://i37.tinypic.com/14bt0rr.jpg

Portanto, o objectivo deste programa é: através do botão 'Imprimir', fazer a impressão, para a impressora predefenida da rede, do documento selecionado na listbox, consoante o nº de cópias que o utilizador colocar. O objecto a usar é o 'PrintDocument' . Como fazer isto?

Espero que tenham percebido a minha ideia agora 👍

Link to comment
Share on other sites

Pergunto porque o "PrintDocument" não faz o que parece que julgas que faça.

Não indicas um documento e imprimes.

Com o printdocument tens de literalmente desenhar o documento.

No caso dos TXT é simples, basta escrever linhas controlando os limites horizontais e o número de linhas por página.

Quanto aos PDF, já tens mais voltinhas para dar.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Isso e simples como fazer panquecas 👍

        If IO.Directory.Exists("c:\Dossier") Then
            Dim di As New IO.DirectoryInfo("C:\Dossier")
            Dim aryFi As IO.FileInfo() = di.GetFiles("*.txt")
            Dim fi As IO.FileInfo

            For Each fi In aryFi
                Dim p As New System.Diagnostics.ProcessStartInfo()
                p.Verb = "print"
                p.WindowStyle = ProcessWindowStyle.Hidden
                p.FileName = fi.FullName
                p.UseShellExecute = True
                System.Diagnostics.Process.Start(p)
            Next
        Else
            MsgBox("Pasta Não Existe")
        End If

atenção se não existir pasta da erro... fiz uma verificação de pasta se necessário

Link to comment
Share on other sites

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ListBox1.Items.Add("a.txt")
        ListBox1.Items.Add("b.pdf")
        ListBox1.Items.Add("Exame.txt")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If IO.Directory.Exists("c:\dossier") Then
            Dim strFileSize As String = ""
            Dim di As New IO.DirectoryInfo("C:\dossier")
            Dim aryFi As IO.FileInfo() = di.GetFiles(ListBox1.Text)
            Dim fi As IO.FileInfo

            For Each fi In aryFi
                Dim p As New System.Diagnostics.ProcessStartInfo()
                p.Verb = "print"
                p.WindowStyle = ProcessWindowStyle.Hidden
                p.FileName = fi.FullName
                p.UseShellExecute = True
                System.Diagnostics.Process.Start(p)
            Next
        Else
            MsgBox("Pasta Não Existe")
        End If
    End Sub

isto???

Link to comment
Share on other sites

Nao, os items da listbox sao adicionados por uma funçao que eu ja implementei:

Private Sub btn_carregardados_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_carregar.Click
        Dim dir As New IO.DirectoryInfo("c:\dossier")

        Label1.Text = dir.ToString

        Dim files As IO.FileInfo() = dir.GetFiles("*.txt")

        Dim fileName As IO.FileInfo
        For Each fileName In files
            ListBox1.Items.Add(fileName.Name)
        Next


    End Sub

Escolhendo um dos items, o conteudo do ficheiro que está descrito na listbox, será impresso...

Link to comment
Share on other sites

AFINAL já funciona 👍

diz-me só mais uma coisa, neste código:

Dim dir As New IO.DirectoryInfo("c:\dossier")

        Label1.Text = dir.ToString

        Dim files As IO.FileInfo() = dir.GetFiles("*.txt")

        Dim fileName As IO.FileInfo
        For Each fileName In files
            ListBox1.Items.Add(fileName.Name)
        Next

na linha de código:

Dim files As IO.FileInfo() = dir.GetFiles("*.txt")

sabes como é que adiciono mais extensões além do .txt?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.