Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Print Prewiev - kako?

[es] :: .NET :: Print Prewiev - kako?

[ Pregleda: 1508 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nevena79
???

Član broj: 202308
Poruke: 335
*.adsl-1.sezampro.yu.

Sajt: www.tablic-klub.com


+1 Profil

icon Print Prewiev - kako?22.11.2008. u 13:18 - pre 189 meseci
Pronasla sam na Internetu ovaj kod koji odlicno radi ali nisam bas potpuno vicna da ga i razradim tj shvatim. Moze li neko da mi ga pojasni i napise komentare na srpskom? Mislim da nije puno posla jer sve je gotovo.

Code:

Imports System.Drawing.Printing

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'This call is required by the Windows Form Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    Friend WithEvents btnPrintPreview As System.Windows.Forms.Button
    Friend WithEvents dlgPrint As System.Windows.Forms.PrintDialog
    Friend WithEvents dlgPrintPreview As System.Windows.Forms.PrintPreviewDialog
    Friend WithEvents btnPrintNow As System.Windows.Forms.Button
    Friend WithEvents btnPrintWithDialog As System.Windows.Forms.Button
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1))
        Me.btnPrintPreview = New System.Windows.Forms.Button
        Me.btnPrintWithDialog = New System.Windows.Forms.Button
        Me.dlgPrint = New System.Windows.Forms.PrintDialog
        Me.dlgPrintPreview = New System.Windows.Forms.PrintPreviewDialog
        Me.btnPrintNow = New System.Windows.Forms.Button
        Me.SuspendLayout()
        '
        'btnPrintPreview
        '
        Me.btnPrintPreview.Location = New System.Drawing.Point(104, 80)
        Me.btnPrintPreview.Name = "btnPrintPreview"
        Me.btnPrintPreview.Size = New System.Drawing.Size(96, 23)
        Me.btnPrintPreview.TabIndex = 0
        Me.btnPrintPreview.Text = "Print Preview"
        '
        'btnPrintWithDialog
        '
        Me.btnPrintWithDialog.Location = New System.Drawing.Point(104, 120)
        Me.btnPrintWithDialog.Name = "btnPrintWithDialog"
        Me.btnPrintWithDialog.Size = New System.Drawing.Size(96, 23)
        Me.btnPrintWithDialog.TabIndex = 1
        Me.btnPrintWithDialog.Text = "Print w/Dialog"
        '
        'dlgPrintPreview
        '
        Me.dlgPrintPreview.AutoScrollMargin = New System.Drawing.Size(0, 0)
        Me.dlgPrintPreview.AutoScrollMinSize = New System.Drawing.Size(0, 0)
        Me.dlgPrintPreview.ClientSize = New System.Drawing.Size(400, 300)
        Me.dlgPrintPreview.Enabled = True
        Me.dlgPrintPreview.Icon = CType(resources.GetObject("dlgPrintPreview.Icon"), System.Drawing.Icon)
        Me.dlgPrintPreview.Location = New System.Drawing.Point(96, 16)
        Me.dlgPrintPreview.MinimumSize = New System.Drawing.Size(375, 250)
        Me.dlgPrintPreview.Name = "dlgPrintPreview"
        Me.dlgPrintPreview.TransparencyKey = System.Drawing.Color.Empty
        Me.dlgPrintPreview.Visible = False
        '
        'btnPrintNow
        '
        Me.btnPrintNow.Location = New System.Drawing.Point(104, 160)
        Me.btnPrintNow.Name = "btnPrintNow"
        Me.btnPrintNow.Size = New System.Drawing.Size(96, 23)
        Me.btnPrintNow.TabIndex = 2
        Me.btnPrintNow.Text = "Print Now"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 273)
        Me.Controls.Add(Me.btnPrintNow)
        Me.Controls.Add(Me.btnPrintWithDialog)
        Me.Controls.Add(Me.btnPrintPreview)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)

    End Sub

#End Region

    ' Display a print preview.
    Private Sub btnPrintPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrintPreview.Click
        ' Make a PrintDocument and attach it to 
        ' the PrintPreview dialog.
        dlgPrintPreview.Document = PreparePrintDocument()

        ' Preview.
        dlgPrintPreview.WindowState = FormWindowState.Maximized
        dlgPrintPreview.ShowDialog()
    End Sub

    ' Print with the print dialog.
    Private Sub btnPrintWithDialog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrintWithDialog.Click
        ' Make a PrintDocument and attach it to 
        ' the Print dialog.
        dlgPrint.Document = PreparePrintDocument()

        ' Display the print dialog.
        dlgPrint.ShowDialog()
    End Sub

    ' Print immediately.
    Private Sub btnPrintNow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrintNow.Click
        ' Make a PrintDocument object.
        Dim print_document As PrintDocument = PreparePrintDocument()

        ' Print immediately.
        print_document.Print()
    End Sub

    ' Make and return a PrintDocument object that's ready
    ' to print the paragraphs.
    Private Function PreparePrintDocument() As PrintDocument
        ' Make the PrintDocument object.
        Dim print_document As New PrintDocument

        ' Install the PrintPage event handler.
        AddHandler print_document.PrintPage, AddressOf Print_PrintPage

        ' Return the object.
        Return print_document
    End Function

    ' Print the next page.
    Private Sub Print_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
        ' Draw a rectangle at the margins.
        e.Graphics.DrawRectangle(Pens.Black, e.MarginBounds)

        ' Draw a thick, dashed ellipse.
        Dim dotted_pen As New Pen(Color.Black, 5)
        dotted_pen.DashStyle = Drawing2D.DashStyle.Dash
        e.Graphics.DrawEllipse(dotted_pen, e.MarginBounds)
        dotted_pen.Dispose()

        ' Draw a thick diamond.
        Dim x0 As Integer = e.MarginBounds.X
        Dim y0 As Integer = e.MarginBounds.Y
        Dim wid As Integer = e.MarginBounds.Width
        Dim hgt As Integer = e.MarginBounds.Height
        Dim pts() As Point = { _
            New Point(x0, y0 + hgt \ 2), _
            New Point(x0 + wid \ 2, y0), _
            New Point(x0 + wid, y0 + hgt \ 2), _
            New Point(x0 + wid \ 2, y0 + hgt) _
        }
        e.Graphics.DrawPolygon(New Pen(Color.Black, 5), pts)

        ' There are no more pages.
        e.HasMorePages = False
    End Sub
End Class



Ovo stampa, i prikazuje printprewiev i omogucava okretanje papira... uglavnom kompletno resenje za stampu. E sad, na papitu ce iscrtati nekakve elipse i to mi u sustini ne treba nego ako bi mi neko pokazao kako da napisem text na odredjenom delu papira, gde se podesava velicina fonta i kako ako ima 2 strane jer ovde ima sve u jednoj.
Postavicu i ceo program pa ga mozete skinuti da vidite kako radi. Bila bih vrlo zahvalna na pomoci jer ovo mi cesto treba pa kako ne znam to da koristim uvek komplikujem na drugaciji nacin a ovako je em brze em profesionalnije odradjeno.
Prikačeni fajlovi
 
Odgovor na temu

Nevena79
???

Član broj: 202308
Poruke: 335
*.adsl-1.sezampro.yu.

Sajt: www.tablic-klub.com


+1 Profil

icon Re: Print Prewiev - kako?22.11.2008. u 13:33 - pre 189 meseci
Mozda je bolje da postavim celu stranu a ne kod jer tamo imaju odmah i pojasnjenja pa da vam pomognem...
Evo i originalne strane sa pojasnjenjima
Nemojte da vas uplasi ovako dugacak kod. To je kod kompletnog programa a sam kod za printpriview se nalazi uploadovan ovde i kratak je.





[Ovu poruku je menjao Nevena79 dana 22.11.2008. u 15:31 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

Nevena79
???

Član broj: 202308
Poruke: 335
*.adsl-1.sezampro.yu.

Sajt: www.tablic-klub.com


+1 Profil

icon Re: Print Prewiev - kako?22.11.2008. u 15:45 - pre 189 meseci
Evo ga deo koda koji sam uspela izdvojiti kao onaj koji crta sta se nalazi na papiru.
Code:

  ' Print the next page.
    Private Sub Print_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
        ' Draw a rectangle at the margins.
        e.Graphics.DrawRectangle(Pens.Black, e.MarginBounds)

        ' Draw a thick, dashed ellipse.
        Dim dotted_pen As New Pen(Color.Black, 5)
        dotted_pen.DashStyle = Drawing2D.DashStyle.Dash
        e.Graphics.DrawEllipse(dotted_pen, e.MarginBounds)
        dotted_pen.Dispose()

        ' Draw a thick diamond.
        Dim x0 As Integer = e.MarginBounds.X
        Dim y0 As Integer = e.MarginBounds.Y
        Dim wid As Integer = e.MarginBounds.Width
        Dim hgt As Integer = e.MarginBounds.Height
        Dim pts() As Point = { _
            New Point(x0, y0 + hgt \ 2), _
            New Point(x0 + wid \ 2, y0), _
            New Point(x0 + wid, y0 + hgt \ 2), _
            New Point(x0 + wid \ 2, y0 + hgt) _
        }
        e.Graphics.DrawPolygon(New Pen(Color.Black, 5), pts)

        ' There are no more pages.
        e.HasMorePages = False
    End Sub

on crta neke elipse i pravougaonik. U sustini mi nije ni bitno da razumem ceo program vec ovaj deo tako da u gotov modul za preview mogu ubacivati svoje podatke i da ih stampam. Kako ovde na stranicu na odredjenoj lokaciji ubaciti text razlicite velicine? Liniju sam shvatila ali za text ne znam.
 
Odgovor na temu

BezPanike

Član broj: 128571
Poruke: 74



+2 Profil

icon Re: Print Prewiev - kako?23.11.2008. u 06:37 - pre 189 meseci
Code:
e.Graphics.DrawString("Neki tekst", New Font("Arial", 10, FontStyle.Regular, GraphicsUnit.Point), Brushes.Black, e.MarginBounds.X, e.MarginBounds.Y)
 
Odgovor na temu

Nevena79
???

Član broj: 202308
Poruke: 335
*.adsl-a-1.sezampro.yu.

Sajt: www.tablic-klub.com


+1 Profil

icon Re: Print Prewiev - kako?23.11.2008. u 08:38 - pre 189 meseci
Odlicno, radi! Hvala ti puno. Mozes li mi pojasniti jos 2 sitnice? Kako da prikazem npr kada imam na vise stranica?
To je verovatno nesto povezano sa ovim?
Code:

        ' There are no more pages.
        e.HasMorePages = False


I postoji greska u kodu, naime kada promenim da je papir okrenuto popreko a ne uzduz kada ponovo udjem u taj dialog on ostane kakav je bio pre tj ne prihvati moju promenu
 
Odgovor na temu

BezPanike

Član broj: 128571
Poruke: 74



+2 Profil

icon Re: Print Prewiev - kako?25.11.2008. u 07:00 - pre 189 meseci
Da, kada podesiš HasMorePages na True, to znači da ima još strana za štampanje.
Što se tiče orijentacije papira u funkciji PreparePrintDocument treba da dodaš:
Code:
print_document.DefaultPageSettings.Landscape = True
 
Odgovor na temu

Nevena79
???

Član broj: 202308
Poruke: 335
*.adsl-a-1.sezampro.yu.

Sajt: www.tablic-klub.com


+1 Profil

icon Re: Print Prewiev - kako?25.11.2008. u 09:23 - pre 189 meseci
Landscape radi ali jos uvek me muci vise strana. Naime kada tamo kazem true desi se da on ucitava veliki broj ISTIH kopija prve strane i valjda bi ih iscrtavao beskonacno da ne kazem stop. Pokusala sam da neki text stavim na koordinatama izvan prve strane ali onda se jednostavno ne pojavi nova strana nego samo teksta nema na prvoj strani. Znaci kako da napisem npr Nevena na 2. strani i BezPanike na trecoj?
 
Odgovor na temu

BezPanike

Član broj: 128571
Poruke: 74



+2 Profil

icon Re: Print Prewiev - kako?25.11.2008. u 12:43 - pre 189 meseci
Onda kod treba da pretrpi male prepravke:
Code:
    Private Function PreparePrintDocument() As PrintDocument
        Dim print_document As New PrintDocument

        AddHandler print_document.PrintPage, AddressOf Print_PrintPage
        AddHandler print_document.BeginPrint, AddressOf Print_BeginPrint

        Return print_document
    End Function

    Dim strana As Integer

    Private Sub Print_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
        Select Case strana
            Case 1 'prva strana
                e.Graphics.DrawRectangle(Pens.Black, e.MarginBounds)

                Dim dotted_pen As New Pen(Color.Black, 5)
                dotted_pen.DashStyle = Drawing2D.DashStyle.Dash
                e.Graphics.DrawEllipse(dotted_pen, e.MarginBounds)
                dotted_pen.Dispose()

                Dim x0 As Integer = e.MarginBounds.X
                Dim y0 As Integer = e.MarginBounds.Y
                Dim wid As Integer = e.MarginBounds.Width
                Dim hgt As Integer = e.MarginBounds.Height
                Dim pts() As Point = { _
                    New Point(x0, y0 + hgt \ 2), _
                    New Point(x0 + wid \ 2, y0), _
                    New Point(x0 + wid, y0 + hgt \ 2), _
                    New Point(x0 + wid \ 2, y0 + hgt) _
                }
                e.Graphics.DrawPolygon(New Pen(Color.Black, 5), pts)

                'ima jos strana
                e.HasMorePages = True
                strana += 1
            Case 2 'druga strana
                e.Graphics.DrawString("Nevena", New Font("Arial", 50, FontStyle.Bold, GraphicsUnit.Point), Brushes.Black, e.MarginBounds.X, e.MarginBounds.Y)

                'i jos
                e.HasMorePages = True
                strana += 1
            Case 3 'treca strana
                e.Graphics.DrawString("BezPanike", New Font("Arial", 50, FontStyle.Bold, GraphicsUnit.Point), Brushes.Black, e.MarginBounds.X, e.MarginBounds.Y)

                'i nema vise!
                e.HasMorePages = False
        End Select
    End Sub

    Private Sub Print_BeginPrint(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintEventArgs)
        'da se pozicionira uvek na prvu stranu
        strana = 1
    End Sub
 
Odgovor na temu

Nevena79
???

Član broj: 202308
Poruke: 335
*.adsl-a-1.sezampro.yu.

Sajt: www.tablic-klub.com


+1 Profil

icon Re: Print Prewiev - kako?25.11.2008. u 17:38 - pre 189 meseci
E sada sam upotpunosti shvatila. Hvala ti puno na trudu, zaista... Pozdrav!
 
Odgovor na temu

MarkoBalkan

Član broj: 141124
Poruke: 1624
..142.113-dsl.net.metronet.hr.



+19 Profil

icon Re: Print Prewiev - kako?27.11.2008. u 18:43 - pre 188 meseci
a zašto se zajbevaš s time?

jednostavnije je koristiti crystal reportse.
 
Odgovor na temu

BezPanike

Član broj: 128571
Poruke: 74



+2 Profil

icon Re: Print Prewiev - kako?28.11.2008. u 07:10 - pre 188 meseci
Verovatno zbog one sitnice sa licenciranjem...
 
Odgovor na temu

Nevena79
???

Član broj: 202308
Poruke: 335
*.adsl-1.sezampro.yu.

Sajt: www.tablic-klub.com


+1 Profil

icon Re: Print Prewiev - kako?28.11.2008. u 18:15 - pre 188 meseci
Mislim da ti je Panika vrlo lepo odgovorio :) a i ne vidim bas neki razlog da se ne "zajebava" sa ovim jer vrlo lepo radi i imas punu kontrolu izlaznog dokumenta.
 
Odgovor na temu

MarkoBalkan

Član broj: 141124
Poruke: 1624
..156.192-dsl.net.metronet.hr.



+19 Profil

icon Re: Print Prewiev - kako?29.11.2008. u 09:10 - pre 188 meseci
crystal reports koji dolazi uz VS je lite verzija koja je besplatna.
a kod korisnika se može instalirati taj lite.
a drugo recimo korisnik hoće izvoz u pdf?

onda češ opet raditi taj dio?

za print klasu sve što imaš kao statički dio, moraš ručno pisati, ne kažem da ne valja, zašto ako imaš gotov alat.


zamisli da imaš malo složeniji izvještaj, pa moraš još iz baze vući podatke i prikazvati na printu.

ok, izvrti se datatable i prikažu se redovi, ali jako puno posla.
a mislim, ako već živiš od toga, 1 licenca za windowse xp + 1 za VS2008 -> ukupno cca. do 1000 eura.
 
Odgovor na temu

[es] :: .NET :: Print Prewiev - kako?

[ Pregleda: 1508 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.