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

Print Preview, lomljenje strana

[es] :: .NET :: Print Preview, lomljenje strana

[ Pregleda: 3676 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.adsl-2.sezampro.yu.



+3 Profil

icon Print Preview, lomljenje strana31.01.2008. u 19:50 - pre 197 meseci
Koristim vs2008 VB. Pokusavam da napravim izvestaj iz acess baze na PrintDocument koji je provucen kroz PrintPreview kontrolu. Sta se desava??? Zapise provucem kroz petlju Do until - loop koji mi izbaci jako puno zapisa koji ne mogu da stanu na jednu stranu. Kako da mu zadam kod da nastavi da stampa na sledecu stranu tj. nastavi sa prikazivanjem ostalih zapisa na novu stranu. Koristim graphics metod..... evo i malo koda


Code:

Do Until rsSveOce.EOF
                nSO = nSO + 15

                e.Graphics.DrawString(rsSveOce("NazivOblasti").Value & " - (Ocena :   " & rsSveOce("Ocena").Value & ") - Datum:  " & rsSveOce("DatumOcene").Value, fonSveOce, Brushes.Black, 20, 450 + nSO, New StringFormat)
                rsSveOce.MoveNext()




            Loop

            If Not (rsSveOce.EOF) Then
                e.HasMorePages = True
            Else
                e.HasMorePages = False
            End If


ima li neko ideju kako da to izvedem??

Pozdrav....
 
Odgovor na temu

prog
Bihac

Član broj: 106882
Poruke: 77
*.806591-86.bih.net.ba.



Profil

icon Re: Print Preview, lomljenje strana01.02.2008. u 11:01 - pre 197 meseci
Nisam u .NEt radio printanje ali mislim da je slicno kao kod MFC, vjerojatno bi trebao da kontrolises koordinate lista. Naime kao što sigurno znaš svaki list ima svoje pocetne i krajnje koordinate (Format papira). Ako je koordinata na kojoj se treba da se iscrta text veca od krajnje koordinate lista predji na novi list.
 
Odgovor na temu

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.adsl-3.sezampro.yu.



+3 Profil

icon Re: Print Preview, lomljenje strana01.02.2008. u 17:22 - pre 197 meseci
Treba mi konkretan kod...

Uvecava mi se broj strana ali i text koji se vec nalazi na prvoj strani. Meni je potreban samo nastavak teksta......

Hvala unapred..
 
Odgovor na temu

djordjeno
Srbija

Član broj: 35204
Poruke: 332
195.178.57.*

Sajt: www.mobitel.si


+42 Profil

icon Re: Print Preview, lomljenje strana03.02.2008. u 08:37 - pre 197 meseci
Pozdrav,

Ako dobro razumem VB kod koji si napisao, ti imash proveru za prelazak na novu stranu tek posto se zavrsi Do Until petlja. Po kodu nikada se nece ni preci na novu stranu. Postavi proveru za novu stranu u okviru Do Until petlje, posto je n rekorda ispisano.

 
Odgovor na temu

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.adsl-3.sezampro.yu.



+3 Profil

icon Re: Print Preview, lomljenje strana06.02.2008. u 15:33 - pre 197 meseci
Ne uspevam da odstampam text iz baze uz Do until petlju. Postavio sam uvecanje broja strana unutar petlje ali sta radi?
Povecava beskonacno broj strana stim da na svaku postavlja vec postojeci text iz baze. Znaci beskonacno strana sa istim sadrzajem, bez nastavka teksta.
Moze li neko da mi da primer u VB-u kod koristeci e.Graphics.DrawString(), a da mi se na novoj strani ne ponavlja isti tekst vec novi tj. nastavak?

Hvala unapred!!
 
Odgovor na temu

Astek
Marković Darko
Beograd

Član broj: 128308
Poruke: 160
*.3dnet.co.yu.



+1 Profil

icon Re: Print Preview, lomljenje strana06.02.2008. u 16:30 - pre 197 meseci
Citat:
borcha: Ne uspevam da odstampam text iz baze uz Do until petlju. Postavio sam uvecanje broja strana unutar petlje ali sta radi?
Povecava beskonacno broj strana stim da na svaku postavlja vec postojeci text iz baze. Znaci beskonacno strana sa istim sadrzajem, bez nastavka teksta.
Moze li neko da mi da primer u VB-u kod koristeci e.Graphics.DrawString(), a da mi se na novoj strani ne ponavlja isti tekst vec novi tj. nastavak?

Hvala unapred!!


Svaki put kada prelomi stranicu ponovo počinje da celu proceduru izvrsava iz pocetka. Moras da printanje nastavis od pozicije na kojoj si stao. Sta znam, uvedi neke static promenljive...
 
Odgovor na temu

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.adsl-3.sezampro.yu.



+3 Profil

icon Re: Print Preview, lomljenje strana06.02.2008. u 21:00 - pre 197 meseci
Treba mi konkretno kodm primer???

Evo kako sam ja zamislio, ali ocigledno ne valja!

Code:
 Do Until rsSveOce.EOF


                If nSO > pdOcene.DefaultPageSettings.Bounds.Y Then
                    nSO = nSO + 15



                    e.Graphics.DrawString(rsSveOce("NazivOblasti").Value & " - (Ocena :   " & rsSveOce("Ocena").Value & ") - Datum:  " & rsSveOce("DatumOcene").Value, fonSveOce, Brushes.Black, 20, 400 + nSO, New StringFormat)

                    rsSveOce.MoveNext()

                    e.HasMorePages = True
                End If


            Loop
                    
                    e.HasMorePages =False




Zna li neko kako to da izvedem?

Pozdrav...
 
Odgovor na temu

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.adsl-4.sezampro.yu.



+3 Profil

icon Re: Print Preview, lomljenje strana08.02.2008. u 15:08 - pre 197 meseci
I dalje ne uspevam!!!

Ako moze neki mali primer, kako da to resim.....????
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
77.46.183.*

Jabber: DarkMan


Profil

icon Re: Print Preview, lomljenje strana08.02.2008. u 17:52 - pre 197 meseci
Posle gornjih objasnjenja stvarno ne razumem kako nisi skontao. Nisam odavno radio u VB.NET pa nisam siguran u ispravnost sintakse. Probaj sledece:

Code:

Dim rsSveOce as Recordset ' valjda je ovako


Private Sub Print_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
  Dim Y as int
  Y = 0
  e.HasMorePages =False
  
  Do Until rsSveOce.EOF
    
    If Y >= pdOcene.DefaultPageSettings.Bounds.Y Then
      e.HasMorePages = True
      Exit Loop ' ili mozda moze return, zaboravih
    End If

    e.Graphics.DrawString(rsSveOce("NazivOblasti").Value , fonSveOce, Brushes.Black, 20, Y, New StringFormat)

    rsSveOce.MoveNext()
     Y = Y + 15

  Loop

End Sub


Znaci uvek pocinjes da crtas od pocetka strane i crtas koliko imas podataka i koliko moze da stane. Ako ima jos podataka da se iscrta a presli smo velicinu strane onda oznacis da ima jos strana i izlazis iz procedure. Recordset ce ostati pozicioniran tamo gde je stao i po sledecem ulasku u metodu PrintPage ce nastaviti tamo gde je stao ali ovaj put crtas ponovo sa pocetne pozicije Y = 0 ali na novoj stranici. Kada iscrtas sve podatke a nisi dosao do kraja strane, petlja ce se prekinuti i ostace ti oznaceno da nemas vise strana.

 
Odgovor na temu

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.adsl-4.sezampro.yu.



+3 Profil

icon Re: Print Preview, lomljenje strana08.02.2008. u 18:17 - pre 197 meseci
Ok, skontao sam kod... Hvala ti na tome!!

Postoji li neki gotov raport koji bih mogao da iskoristim, da nebi gubio vreme ?? Gde da ga skinem ili pronadjem?

Hvala, pozdrav!!
 
Odgovor na temu

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.adsl-3.sezampro.yu.



+3 Profil

icon Re: Print Preview, lomljenje strana10.02.2008. u 12:31 - pre 197 meseci
Zna li neko gde gresim kod ovog koda???


Code:
  Dim Y As Integer
            Y = 0

            e.HasMorePages = False

            Do Until rsSveOce.EOF



                If Y >= pdOcene.DefaultPageSettings.Bounds.Y Then
                    e.HasMorePages = True

                    Return
                End If




                e.Graphics.DrawString(rsSveOce("NazivOblasti").Value & " - (Ocena :   " & rsSveOce("Ocena").Value & ") - Datum:  " & rsSveOce("DatumOcene").Value, fonSveOce, Brushes.Black, 20, 400 + Y, New StringFormat)
                rsSveOce.MoveNext()
                Y = Y + 15


            Loop


Pokusavam da odstampam document u vise strana a da se nastavak teksta prikaze u nastavku na drugoj strani!!
 
Odgovor na temu

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.adsl-3.sezampro.yu.



+3 Profil

icon Re: Print Preview, lomljenje strana13.02.2008. u 19:03 - pre 197 meseci
Molim vas jedan primer ali da funkcionise !!!

Nesto ovako, samo mi treba tacno!!

Code:
    Private Sub pdSveOcene_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles   pdSveOcene.PrintPage
        Try

        Dim i As Single = 0
            Dim b As Integer


            For b = 1 To 3000

                e.HasMorePages = False

                If i >= pdSveOcene.DefaultPageSettings.Bounds.Y Then

                    e.HasMorePages = True


                End If

                e.Graphics.DrawString(b.ToString, Me.Font, Brushes.Black, 20, i)

                i = i + 15


            Next b

end sub


Help!!!


 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
79.101.194.*

Jabber: DarkMan


Profil

icon Re: Print Preview, lomljenje strana13.02.2008. u 19:55 - pre 197 meseci
Citat:
borcha: Zna li neko gde gresim kod ovog koda???


Code:
  Dim Y As Integer
            Y = 0

            e.HasMorePages = False

            Do Until rsSveOce.EOF



                If Y >= pdOcene.DefaultPageSettings.Bounds.Y Then
                    e.HasMorePages = True

                    Return
                End If




                e.Graphics.DrawString(rsSveOce("NazivOblasti").Value & " - (Ocena :   " & rsSveOce("Ocena").Value & ") - Datum:  " & rsSveOce("DatumOcene").Value, fonSveOce, Brushes.Black, 20, 400 + Y, New StringFormat)
                rsSveOce.MoveNext()
                Y = Y + 15


            Loop


Pokusavam da odstampam document u vise strana a da se nastavak teksta prikaze u nastavku na drugoj strani!!


Ako dodajes 400 na Y koordinatu moras i u proveri dodati:
Code:

                If (400+Y) >= pdOcene.DefaultPageSettings.Bounds.Y Then
                    e.HasMorePages = True

                    Return
                End If

inace ces izgubiti dobar deo teksta jer ce ti tih (400/15) ~ 26 linija teksta stampati izvan okvira stranice.

Citat:
borcha: Molim vas jedan primer ali da funkcionise !!!

Nesto ovako, samo mi treba tacno!!

Code:
    Private Sub pdSveOcene_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles   pdSveOcene.PrintPage
        Try

        Dim i As Single = 0
            Dim b As Integer


            For b = 1 To 3000

                e.HasMorePages = False

                If i >= pdSveOcene.DefaultPageSettings.Bounds.Y Then

                    e.HasMorePages = True


                End If

                e.Graphics.DrawString(b.ToString, Me.Font, Brushes.Black, 20, i)

                i = i + 15


            Next b

end sub


Help!!!



Ocigledno da nisi shvatio poentu primera koji sam postovao. Kao prvo imas petlju koja je uvek ponavlja 3000 puta bez obzira koju stanu stampao a trebalo bi da ti se smanjuje nakon svake strane (tj. za onoliko koliko si odstampao). Drugo, kod provere da li si presao donju marginu strane nisi prekinuo izvrsavanje metode, ostavio si da se petlja zavrsi do kraja.

Probaj sledece:
Code:


Dim b As Integer

Private Sub pdSveOcene_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles   pdSveOcene.PrintPage

        Dim i As Single = 0

        e.HasMorePages = False

         while b < 3000


                If i >= pdSveOcene.DefaultPageSettings.Bounds.Y Then
                    e.HasMorePages = True
                    Return
                End If

                e.Graphics.DrawString(b.ToString, Me.Font, Brushes.Black, 20, i)

                i = i + 15
                b = b + 1
          Loop

end sub
 
Odgovor na temu

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.adsl-3.sezampro.yu.



+3 Profil

icon Re: Print Preview, lomljenje strana13.02.2008. u 21:27 - pre 197 meseci
Dim b ide ispod rutine

i nije loop nego end while! ali i bez toga ne funkcionise. Sada nista ne stampa.

Hvala tebi na trudu...

izgleda ja to moram sam da prokljuvim!!

[Ovu poruku je menjao borcha dana 14.02.2008. u 12:26 GMT+1]
 
Odgovor na temu

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.adsl-3.sezampro.yu.



+3 Profil

icon Re: Print Preview, lomljenje strana13.02.2008. u 21:31 - pre 197 meseci
Ovaj return mi nije jasan ... Gde on vraca citanje. Pojavi se nova strana ali se ponavlja i sadrzaj ne nastavlj se...
 
Odgovor na temu

vujkev
Beograd

Član broj: 8072
Poruke: 1347
212.200.243.*



+104 Profil

icon Re: Print Preview, lomljenje strana13.02.2008. u 23:52 - pre 197 meseci
Evo ga jedan totalno prost kod sa kojim možeš da vidiš kako da napraviš lomljenje stranica. Jednostavnije od ovoga ne može tako da je potrebno samo da izvršavaš program sa F8 tj. liniju po liniju i sve će ti se samo kazati
Code:
    Dim BrojRedova As Integer
    Dim pp As New PrintPreviewDialog
    Private WithEvents pd As New Printing.PrintDocument

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

        pp.Document = pd
        pp.ShowDialog(Me)
    End Sub

    Private Sub pd_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pd.PrintPage
        Dim y As Integer = 10
        Do While y < e.Graphics.VisibleClipBounds.Height And BrojRedova > 0
            e.Graphics.DrawString(BrojRedova.ToString, Me.Font, Brushes.Black, 10, y)

            BrojRedova -= 1
            y += 50
        Loop
        If BrojRedova > 0 Then
            e.HasMorePages = True
        End If
    End Sub

Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
79.101.194.*

Jabber: DarkMan


Profil

icon Re: Print Preview, lomljenje strana14.02.2008. u 00:02 - pre 197 meseci
Evo ti primer koji radi. Medjutim napisao sam ga u C# jer niti imam VB.NET niti bi ga znao napisati u VB.NET. Ako neko hoce da ga prevede slobodno neka prevde.
Code:


using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;

namespace WindowsApplication1
{
    static class Print
    {
        [STAThread]
        static void Main()
        {
            Application.Run(new MyPrintPreview());
        }
      
    }

    public class MyPrintPreview: Form
    {
        private PrintPreviewControl preview;
        private int ukupno = 0;

        public MyPrintPreview()
        {
            preview = new PrintPreviewControl();
            preview.Dock = DockStyle.Fill;
            this.Controls.Add(preview);
            this.WindowState = FormWindowState.Maximized;
            preview.Document = new MyPrintDocument();
            preview.KeyPress += new KeyPressEventHandler(preview_KeyPress);
            preview.Document.PrintPage += new PrintPageEventHandler(Document_PrintPage);
            preview.Document.EndPrint += new PrintEventHandler(Document_EndPrint);
        }

        private void Document_PrintPage(object sender, PrintPageEventArgs e)
        {
            ukupno++;
        }

        private void Document_EndPrint(object sender, PrintEventArgs e)
        {
            PrikaziBrojStrane();
        }

        private void preview_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(preview.StartPage == ukupno - 1)
                preview.StartPage = 0;
            else
                preview.StartPage++;
            PrikaziBrojStrane();
        }

        private void PrikaziBrojStrane()
        {
            int strana = preview.StartPage + 1;
            this.Text = "Strana: " + strana + "/" + ukupno;
        }


    }

    public class MyPrintDocument: PrintDocument
    {
        public MyPrintDocument()
        {
            this.PrintPage += new PrintPageEventHandler(MyPrintDocument_PrintPage);
        }

        private int counter = 0;

        private void MyPrintDocument_PrintPage(object sender, PrintPageEventArgs e)
        {
            int y = 0;
            e.HasMorePages = false;
            while(counter < 200) {
                if(y >= e.PageBounds.Bottom) {
                    e.HasMorePages = true;
                    return;
                }
                e.Graphics.DrawString(counter.ToString(), SystemFonts.MessageBoxFont, Brushes.Black, 20, y);
                y += 15;
                counter++;
            }
        }

    }

}

Prikačeni fajlovi
 
Odgovor na temu

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.goranjesic.net.



+3 Profil

icon Re: Print Preview, lomljenje strana14.02.2008. u 11:47 - pre 197 meseci
Iskreno hvala na trudu!

Probacu ovaj Vb kod a mozda i ovaj u C#. Imam kompjler pa ce ga on sam prebaciti iz VB u C#.

Poz...

Javljam
 
Odgovor na temu

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.adsl-1.sezampro.yu.



+3 Profil

icon Re: Print Preview, lomljenje strana22.02.2008. u 09:45 - pre 196 meseci
Sve je ok! uspeo sam ...

Interesuje me da li postoji nesto gotovo sto bi mi u buducnosti olaksalo posao i da lici na nesto. Postoji li neka kontrola i gde mogu da je nabavim?
 
Odgovor na temu

borcha
Boris Bokan
;-(
Novi Sad

Član broj: 148976
Poruke: 419
*.adsl-1.sezampro.yu.



+3 Profil

icon Re: Print Preview, lomljenje strana22.02.2008. u 16:09 - pre 196 meseci
Skontao sam kako da stampam predvidjen broj n

Moze li neko da mi da primer kako to da izvedem sa bazom (napomena: Treba mi prikaz u printpreview sa graphics methodom)...

recimo da je ovo skup zapisa...


Code:
 do until rs.EOF

    e.drawstring(rs("Naziv").value,font, blackpen, x,y)

    rs.MoveNext

  loop


kako ovo preneti na papir u vise strana a da se na svakoj narednoj ne ponavlja i stane sa stampom ukoliko br zapisa vise ne postoji...

Unapred hvala, bespomocni glupan!!!

poz...
 
Odgovor na temu

[es] :: .NET :: Print Preview, lomljenje strana

[ Pregleda: 3676 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

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