Avatar billede cole Nybegynder
05. juli 2001 - 17:11 Der er 6 kommentarer og
1 løsning

Udskrivning af hele A4 sider

Jeg har lavet et program som består af flere forskellige databaser. Jeg har ligeledes lavet et program hvor jeg kan plukke forskellige værdier ud fra databaserne, så de kan samles til en rapport.
Problemet er at jeg ikke kan finde en form hvor jeg se hele udskriftet før jeg printer det ud. Bruger jeg en form som skabelon kan jeg kun udfylde en halv A4 side når jeg bruger Show & PrintForm kommandoen. Er der nogen der har en god ide.
Avatar billede joern Nybegynder
05. juli 2001 - 18:53 #1
Hej.

Du kan godt lave en form der er højrere end et skærmbillede og så bare scrolle vandret når du vil lave preview.
Jeg har designet nogle udskrifter med en hel masse kode, her et eksempel til inspiration:

    \'overskrift
    \'--------------------------------------------------------------
      On Error GoTo printfejl
      printer.Print \"\"                              \'aktivér printer
      printer.FontName = \"Times New Roman\"
      printer.FontSize = 20
      printer.FontBold = 1
      \'printer.Print Tab(20); \"Joka\' Handel & Udlejning tlf. 5545 9678\"
      printer.Print Tab(20); \"JkfSoft-demo      tlf. 55 81 18 28\"
      printer.Print Tab(20); \"Test\"
      printer.FontSize = 16
      printer.Print Tab(38); \"Spjellerup Bygade 52, 4262 Sandved.\"
      printer.Print \"\"
      printer.Print \"\"
      printer.FontSize = 14
      printer.FontName = \"Times New Roman\"
      printer.Print Tab(16); stam(1)                    \'navn
      printer.Print Tab(16); stam(2)                    \'adr
      printer.Print Tab(16); stam(3) & \"  \" & stam(4); Tab(70); \"Kundenr. \" & stam(0)
      printer.FontBold = 0
      printer.Print Tab(75); \"Faktura nr.  \" & stam(5)
      printer.Print Tab(75); \"Dato:  \" & stam(6)
      printer.FontSize = 12
      printer.Print Tab(18); \"_____________________________________________________________________________\"
      printer.Print \" \"
      printer.Print Tab(20); \"Varenummer\"; Tab(35); \"Antal\"; Tab(45); \"Betegnelse\"; Tab(85); \"Enhedspris\"; Tab(105); \"Pris\"
      printer.Print Tab(18); \"_____________________________________________________________________________\"
     
      printer.Print \" \"
     
      For x = 0 To fakpost - 1
        xfa = 35
        If Len(fa(x)) = 1 Then xfa = 38
        If Len(fa(x)) = 2 Then xfa = 37
        If Len(fa(x)) = 3 Then xfa = 36
        xep = 84
        If Len(ep(x)) = 4 Then xep = 89
        If Len(ep(x)) = 5 Then xep = 88
        If Len(ep(x)) = 6 Then xep = 87
        If Len(ep(x)) = 7 Then xep = 86
        If Len(ep(x)) = 8 Then xep = 85
        xup = 100
        If Len(ump(x)) = 4 Then xup = 105
        If Len(ump(x)) = 5 Then xup = 104
        If Len(ump(x)) = 6 Then xup = 103
        If Len(ump(x)) = 7 Then xup = 102
        If Len(ump(x)) = 8 Then xup = 101
        printer.Print Tab(20); fnr(x); Tab(xfa); fa(x); Tab(42); betegn(x); Tab(xep); ep(x); Tab(xup); ump(x)
        If Val(ump(x)) > 0 Then formoms = formoms + Val(ump(x) * 100) / 100
      Next
     
      For x = 0 To 25 - fakpost
        printer.Print \"\"                \'tomme linier for at få sum nederst
      Next
      printer.Print Tab(18); \"_____________________________________________________________________________\"
        antlin = Len(Format(formoms, \"fixed\"))
        xup = 99
        If antlin = 4 Then xup = 105
        If antlin = 5 Then xup = 104
        If antlin = 6 Then xup = 103
        If antlin = 7 Then xup = 102
        If antlin = 8 Then xup = 101
        If antlin = 9 Then xup = 100
      printer.Print Tab(85); \"subtotal\"; Tab(xup); Format(formoms, \"fixed\")
      subtotal = Format(formoms, \"fixed\")                      \'til faktura-database

      If rabat > 0 Then
        antlin = Len(Format(rabat, \"fixed\"))
        xup = 101
        If antlin = 4 Then xup = 104
        If antlin = 5 Then xup = 103
        If antlin = 6 Then xup = 102
        printer.Print Tab(85); \"Prisafslag\"; Tab(xup); \"- \" & Format(rabat, \"fixed\")
      End If
        antlin = Len(Format((formoms - rabat) * .25, \"fixed\"))
        xup = 99
        If antlin = 4 Then xup = 105
        If antlin = 5 Then xup = 104
        If antlin = 6 Then xup = 103
        If antlin = 7 Then xup = 102
        If antlin = 8 Then xup = 101
        If antlin = 9 Then xup = 100
      printer.Print Tab(85); \"25% moms\"; Tab(xup); Format((formoms - rabat) * .25, \"fixed\")
      momsbelob = Format((formoms - rabat) * .25, \"fixed\")    \'til faktura-database
      printer.Print Tab(18); \"_____________________________________________________________________________\"
      printer.Print \"\"
      printer.FontBold = 1
      printer.FontSize = 16
      printer.Print Tab(48); \"Fakturabeløb kr.\"; Tab(73); Format((formoms - rabat) * 1.25, \"fixed\")
      fakbelob = Format((formoms - rabat) * 1.25, \"fixed\")    \'til faktura-database
      printer.Print Tab(14); \"=================================================\"
      printer.FontBold = 0
      printer.FontSize = 12
      printer.Print Tab(25); \"Betalingsbetingelser: 10 dage fra fakturadato med mindre andet er aftalt\"
      printer.Print \"\"
      printer.Print Tab(20); stam(7)
      printer.Print \"\"
      printer.Print \"\"
      \'printer.Print Tab(20); \"E-post:  joka@adr.dk\"; Tab(50); \"Internet: www.jokahandel.dk\"; Tab(90); \"Mobiltlf. 4063 9678\"
      printer.DrawWidth = 2
      printer.Print Tab(22); \"E-post:  salg@jkfsoft.dk\"; Tab(55); \"Internet: www.jkfsoft.dk\"; Tab(90); \"Tlf. 5581 1828\"
     
      printer.DrawWidth = 1
      printer.Line (1630, 1600)-(10870, 14500), , B
      printer.Line (1630, 15200)-(10870, 15600), , B
      printer.EndDoc
      Exit Sub
printfejl:
      x = MsgBox(\"Printeren melder fejl, undersøg printer og papir - muligvis mangler du bare fonten Vagabond.\", 16, \"Medd. fra udskriv faktura.\")
      Exit Sub
      Resume Next
End Sub


Du kan evt. skrive det hele til en fil og så inspicere dér forinden udskrift.

M.v.h.  Jørn
Avatar billede sjh Nybegynder
05. juli 2001 - 22:01 #2
Prøv at indsætte dette i en form:

\'--------- Se udskriftet i % ---------
\'
\'Set 2 CommandButton på en form \"cmdBilledFelt\" og \"cmdPrint\"
\'set også 1 TextBox på formlen \"txtZoom\"
\'og 2 PictureBox \"picBeholder\" og \"picPrinter\", picPrinter setter du inden i picBeholder
\'set også 2 ScrollBar på \"vsbLodret\" og \"hsbVandret\"
\'og et Image \"imgKilde\"

\'-----------------------------------
\'cmdBilledFelt = CommandButton
\'cmdPrint      = CommandButton
\'txtZoom      = TextBox
\'picBeholder  = PictureBox
\'picPrinter    = PictureBox
\'vsbLodret    = VScrollBar
\'hsbVandret    = HScrollBar
\'imgKilde      = Image
\'-----------------------------------

Option Explicit
Dim Ratio As Single

Public Sub prnDemo(objModtager As Object)
  prnBegynd objModtager, txtZoom.Text \'Zoom 30%

  objModtager.Line (0, 0)-(objModtager.ScaleWidth, objModtager.ScaleHeight)
  objModtager.PaintPicture imgKilde.Picture, 10, 10, 7, 5
  objModtager.CurrentX = 10
  objModtager.CurrentY = 10 + 5
  objModtager.FontName = \"Arial\"
  objModtager.FontSize = 12 * Ratio
  objModtager.Print \"Vild hund i Zambia\"
  objModtager.CurrentX = 0.5
  objModtager.CurrentY = 1
  objModtager.FontName = \"Times New Roman\"
  objModtager.FontSize = 40 * Ratio
  objModtager.Print \"Udskrivning til printer og billedfelt\"
 
  prnSlut objModtager
End Sub


Public Sub prnBegynd(objModtager As Object, fSize As Single)

  If TypeOf objModtager Is Printer Then
    Printer.ScaleMode = vbCentimeters
    Ratio = 1
    Printer.Print \"\"
    Printer.CurrentX = 0
    Printer.CurrentY = 0
    Printer.FontTransparent = True
  Else
    Printer.ScaleMode = vbCentimeters
    objModtager.Cls
    Ratio = fSize / 100
    objModtager.ScaleMode = vbTwips
    objModtager.Width = (objModtager.Width - objModtager.ScaleWidth) + (Printer.Width * Ratio)
    objModtager.Height = (objModtager.Height - objModtager.ScaleHeight) + (Printer.Height * Ratio)
    picPrinter.Left = 0
    picPrinter.Top = 0
    hsbVandret.Max = -(picPrinter.Width - picBeholder.Width)
    hsbVandret.Visible = (picPrinter.Width > picBeholder.Width)
    hsbVandret.LargeChange = Abs(hsbVandret.Max / 10)
    hsbVandret.SmallChange = Abs(hsbVandret.Max / 100)
    vsbLodret.Max = -(picPrinter.Height - picBeholder.Height)
    vsbLodret.Visible = (picPrinter.Height > picBeholder.Height)
    vsbLodret.LargeChange = Abs(vsbLodret.Max / 10)
    vsbLodret.SmallChange = Abs(vsbLodret.Max / 100)
    objModtager.Scale (0, 0)-(Printer.ScaleWidth, Printer.ScaleHeight)
    objModtager.Visible = True
  End If
 
End Sub

Public Sub prnSlut(objModtager As Object)

  If TypeOf objModtager Is Printer Then
    Printer.EndDoc
  End If

End Sub

Private Sub cmdBilledFelt_Click()

  prnDemo picPrinter

End Sub

Private Sub cmdPrint_Click()

  prnDemo Printer

End Sub

Private Sub Form_Load()

  txtZoom.Text = \"30\"

End Sub

Private Sub hsbVandret_Change()

  picPrinter.Left = hsbVandret.Value

End Sub

Private Sub vsbLodret_Change()

  picPrinter.Top = vsbLodret.Value

End Sub
Private Sub hsbVandret_Scroll()

  picPrinter.Left = hsbVandret.Value

End Sub
Private Sub vsbLodret_Scroll()

  picPrinter.Top = vsbLodret.Value

End Sub
Avatar billede sjh Nybegynder
05. juli 2001 - 22:09 #3
du skal nok lave picPrinter.BackColor HVID ;)
Avatar billede cole Nybegynder
07. juli 2001 - 11:00 #4
Jeg syndes sjh forslag er meget interessant, dog kan jeg ikke rigtig gennemskue hvordan jeg får placeret mine data som ikke er billeder men tekst så jeg kan benytte prnDemo xxxxx.
Kunne du ikke uddybe dette dette.
Du bruger også kommandoen ImgKilde.Picture, 10 , 10, 7, 5  hvad referere tallene til?
Er det picBeholder hvor den Zoom\'et tekst/billed vises?
Avatar billede sjh Nybegynder
07. juli 2001 - 17:26 #5
cole >>prøv at downloade \"frmPrint.Frm\"
http://hjem.get2net.dk/sjh/eksperten/frmPrint.Frm
Avatar billede cole Nybegynder
08. juli 2001 - 10:00 #6
Det er simpel det bedste svar jeg nogen sinde harv fået
Avatar billede cole Nybegynder
08. juli 2001 - 10:01 #7
Det er simpel hen det bedste svar jeg nogen sinde har fået
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester