Skip to main content

AccessTr.neT M.


Listview Seçilenleri Yazdırma Hakkında

Listview Seçilenleri Yazdırma Hakkında

#1

Kod:
Public Baglan As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='Deneme.mdb'")

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        ListView1.CheckBoxes = True
        ListView1.MultiSelect = True
        ListView1.Columns.Add("√", 20, HorizontalAlignment.Left)
        ListView1.Columns.Add("Adı Soyadı", 150, HorizontalAlignment.Left)
        ListView1.Columns.Add("İşi", 60, HorizontalAlignment.Center)

        Dim cmd As New OleDb.OleDbCommand("SELECT * From Firmalar", Baglan)

        Try
            If Baglan.State = ConnectionState.Closed Then
                Baglan.Open()
            End If
            Dim dr As OleDbDataReader = cmd.ExecuteReader()
            While dr.Read()
                Dim item As New ListViewItem()

                item.SubItems.Add(dr("adi").ToString())
                item.SubItems.Add(dr("isi").ToString())

                ListView1.Items.Add(item)

            End While
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
            Baglan.Close()
        End Try
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        Dim pd As New System.Drawing.Printing.PrintDocument
        AddHandler pd.PrintPage, AddressOf Yazdir
        pd.Print()

    End Sub


    Dim FontN14 As Font = New Font("Tahoma", 14, FontStyle.Regular)
    Dim SayfaSayisi As Integer = 0


    Private Sub Yazdir(ByVal sender As Object, ByVal e As PrintPageEventArgs)
        Dim ortala As New StringFormat
        ortala.Alignment = StringAlignment.Center 'ortala

        Try

            If ListView1.CheckedItems.Count > 0 Then

                For Each lvitem As ListViewItem In ListView1.CheckedItems
                    e.Graphics.DrawString("ADI SOYADI", FontN14, Brushes.Black, New RectangleF(0, 80, e.PageBounds.Width, e.PageBounds.Height), ortala)
                    e.Graphics.DrawString(UCase(ListView1.CheckedItems(SayfaSayisi).SubItems(1).Text), FontN14, Brushes.Black, New RectangleF(0, 100, e.PageBounds.Width, e.PageBounds.Height), ortala)

                    If SayfaSayisi < ListView1.CheckedItems.Count Then
                        SayfaSayisi += 1
                        e.HasMorePages = True
                        Exit For
                    Else
                        e.HasMorePages = False
                    End If
                    SayfaSayisi += 1
                Next
            End If


        Catch ex As Exception

        End Try

    End Sub


Bu şekilde listview de işaretlenenleri yazdırabiliyorum. Fakat sonda 1 sayfa fazla çıkarıyor. Çözüm ne olabilir acaba. Yada başka bir çözüm öneriniz varmıdır. ?

.rar List.rar (Dosya Boyutu: 80 KB | İndirme Sayısı: 20)
drummers, 11-05-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#2
Sonuç nedir fazla sayfa sorunu çözüldü mü

Cevapla
...........
#3
Son Düzenleme: 15/03/2020, 18:38, Düzenleyen: feraz.
(15/03/2020 06:54)accessman Adlı Kullanıcıdan Alıntı: Sonuç nedir fazla sayfa sorunu çözüldü mü
If SayfaSayisi < ListView1.CheckedItems.Count  Then yerine If SayfaSayisi < ListView1.CheckedItems.Count - 1 Then yazılırsa (-1) olarak bence düzelmiştir.

Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da