När man gör ett "hidden-formulär" för att använda sig av det som utskriftsformulär, hur får man det stort som ett A4-papper då? Får inte formulärets höjd till större än 11085 vilket är en bra bit mindre än ett A4 ark. En lättare och smidigare lösning är att använda printer-objektet. Man väljer x- och y-koordinat med Printer.CurrentX resp Printer.CurrentY. Sedan skriver man text med Printer.Print. Det går också att rita cirklar, linjer, punkter mm. Hej, nu lägger jag mej i det här ämnet!  Jo du kan skriva ut bilder med printerobjektet Tror det smygit sig in en liten referenser till formuläret:form.printForm och A4-storlek
    
    
Ser fram emot en lösning på detta!!
Mvh ToveSv: form.printForm och A4-storlek
    
    
Exempel:
<code>
Private Sub Form_Click ()
   Dim HWidth, HHeight, I, Msg   ' Declare variables.
   On Error GoTo ErrorHandler   ' Set up error handler.
   Msg = "This is printed on page"
   For I = 1 To 2   ' Set up two iterations.
      HWidth = Printer.TextWidth(Msg) / 2   ' Get half width.
      HHeight = Printer.TextHeight(Msg) /2   ' Get half height.
      Printer.CurrentX = Printer.ScaleWidth / 2 - HWidth
      Printer.CurrentY = Printer.ScaleHeight / 2 - HHeight
      Printer.Print Msg & Printer.Page & "."   ' Print.
      Printer.NewPage   ' Send new page.
   Next I
   Printer.EndDoc   ' Printing is finished.
   Msg = "Two pages, each with a single, centered line of text, "
   Msg = Msg & "have been sent to your printer."
   MsgBox Msg   ' Display message.
   Exit Sub
ErrorHandler:
   MsgBox "There was a problem printing to your printer."
   Exit Sub
End Sub
</code>
Hälsningar IvarSv: form.printForm och A4-storlek
    
    
Jag har haft samma problem med att skriva ut hidden formulär och jag har också försökt med printer-objektet men då går de väl inte att skriva ut bilder? Jag vill skriva ut en bakgrundsbild och några textfält utplacerade på bilden, finns det något annat sätt att lösa det på?
//RAVESv: form.printForm och A4-storlek
    
    
Använd printer.paintpicure dinImage
Det är lite knöligt att använda men det går :-)
Tänk på att om du använder ett aggregat tex en Listview så måste du loopa igenom datat i den för att det sk skrivas ut
Jag brukar loopa igenom formuläret med koden
skickar exempelkod:
Private Sub printProvdel1()
    Dim LI As ListItem
    Dim rad As Integer
    Dim kontrol As Control
    For Each kontrol In frmprotokoll
        If TypeOf kontrol Is Image Then
            Printer.PaintPicture frmprotokoll.Image1,  frmprotokoll.Image1.Left, frmprotokoll.Image1.Top
        ElseIf TypeOf kontrol Is Label Then
            Printer.FontSize = 14
            Printer.CurrentX = kontrol.Left
            Printer.CurrentY = kontrol.Top
            Printer.Print kontrol.Caption
        ElseIf TypeOf kontrol Is ListView Then
            Printer.Print "                     "
            Printer.Print "                     "
            Printer.FontSize = 10
            Printer.CurrentY = frmprotokoll.LV1.Top
            For Each LI In frmprotokoll.LV1.ListItems
                If LI.ListSubItems(1).Text = "" Or LI.ListSubItems(1).Text = "0" Then
                    Printer.CurrentX = frmprotokoll.LV1.Left
                    rad = Printer.CurrentY
                    Printer.Print LI.Text
                    Printer.CurrentY = rad
                    Printer.CurrentX = frmprotokoll.LV1.Left + 100
                    Printer.Print LI.ListSubItems(2).Text
                Else
                    Printer.CurrentX = frmprotokoll.LV1.Left
                    rad = Printer.CurrentY
                    Printer.Print LI.Text
                    Printer.CurrentY = rad
                    Printer.CurrentX = frmprotokoll.LV1.Left + 100
                    Printer.Print LI.ListSubItems(1).Text
                End If
            Next LI
        End If
    Next kontrol
    Printer.EndDoc
End SubSv: form.printForm och A4-storlek
    
    
<code>
        If TypeOf kontrol Is Image Then
            Printer.PaintPicture frmprotokoll.Image1,  frmprotokoll.Image1.Left, frmprotokoll.Image1.Top
        ElseIf TypeOf kontrol Is Label Then
</code>
Borde nog vara:
<code>
        If TypeOf kontrol Is Image Then
            Printer.PaintPicture kontrol.Picture,  kontrol.Left, kontrol.Top
        ElseIf TypeOf kontrol Is Label Then
</code>
Och för listvieviewn:
<code>
        ElseIf TypeOf kontrol Is ListView Then
            Printer.Print "                     "
            Printer.Print "                     "
            Printer.FontSize = 10
            Printer.CurrentY = frmprotokoll.LV1.Top
            For Each LI In frmprotokoll.LV1.ListItems
                If LI.ListSubItems(1).Text = "" Or LI.ListSubItems(1).Text = "0" Then
                    Printer.CurrentX = frmprotokoll.LV1.Left
                    rad = Printer.CurrentY
                    Printer.Print LI.Text
                    Printer.CurrentY = rad
                    Printer.CurrentX = frmprotokoll.LV1.Left + 100
                    Printer.Print LI.ListSubItems(2).Text
                Else
                    Printer.CurrentX = frmprotokoll.LV1.Left
                    rad = Printer.CurrentY
                    Printer.Print LI.Text
                    Printer.CurrentY = rad
                    Printer.CurrentX = frmprotokoll.LV1.Left + 100
                    Printer.Print LI.ListSubItems(1).Text
                End If
            Next LI
        End If
</code>
Borde nog vara:
<code>
        ElseIf TypeOf kontrol Is ListView Then
            Printer.Print "                     "
            Printer.Print "                     "
            Printer.FontSize = 10
            Printer.CurrentY = kontrol.Top
            For Each LI In kontrol.ListItems
                If LI.ListSubItems(1).Text = "" Or LI.ListSubItems(1).Text = "0" Then
                    Printer.CurrentX = kontrol.Left
                    rad = Printer.CurrentY
                    Printer.Print LI.Text
                    Printer.CurrentY = rad
                    Printer.CurrentX = kontrol.Left + 100
                    Printer.Print LI.ListSubItems(2).Text
                Else
                    Printer.CurrentX = kontrol.Left
                    rad = Printer.CurrentY
                    Printer.Print LI.Text
                    Printer.CurrentY = rad
                    Printer.CurrentX = kontrol.Left + 100
                    Printer.Print LI.ListSubItems(1).Text
                End If
            Next LI
        End If
</code>