Hejsan Du skriver Hej Pelle Har ingen skrivare. Så jag kan inte testa. Men jag skulle göra något sånt här: Hej AndreasAvbryta utskrift av text och fortsätta på ny sida.
Om man nu vill skriva ut t,ex 50 rader text men vill använda sidhuvud och sidfot kan man få till någon sådan funktion?
mvh
TobbeSv: Avbryta utskrift av text och fortsätta på ny sida.
<code>
Printer.Print "Sida 1"
Printer.EndDoc
Printer.Print "Sida 2"
Printer.EndDoc
</code>
/PelleSv: Avbryta utskrift av text och fortsätta på ny sida.
Ok men funkar inte om texten inte får rum på ett papper då fortsätter texten på nästa sida utan sidhuvud.
Jag skulle vilja kunna avbryta utskriften ex, efter 30 rader och sen fortsätta på sidan 2 med utligare kanske 30 rader och så vidare men där i mellan skall det skrivas sidhuvud och sidfot på varje blad.
Mvh
TobbeSv: Avbryta utskrift av text och fortsätta på ny sida.
<code>
Sub PrintReport(Printer As Printer)
Dim Index As Long
Dim HeaderHeight As Single
Dim RowHeight As Single
Dim FooterHeight As Single
Dim FooterTop As Single
HeaderHeight = Printer.TextHeight("") * 1.5
RowHeight = Printer.TextHeight("")
FooterHeight = Printer.TextHeight("") * 2
FooterTop = Printer.ScaleHeight - FooterHeight
Do Until Index > 200
PrintHeader Printer
Printer.CurrentY = HeaderHeight
Do While Printer.CurrentY < (FooterTop - RowHeight)
Index = Index + 1
PrintRow Printer
Loop
Printer.CurrentY = FooterTop
PrintFooter Printer
Printer.NewPage
Loop
Printer.EndDoc
End Sub
Private Sub PrintHeader(Printer As Printer)
Printer.Print "Header"
End Sub
Private Sub PrintRow(Printer As Printer)
Printer.Print "Row"
End Sub
Private Sub PrintFooter(Printer As Printer)
Printer.Print "Footer"
End Sub
</code>
KAnske ett mer passande exempel med ett recordset:
<code>
Sub PrintReport(Printer As Printer, Recordset As ADODB.Recordset)
Dim HeaderHeight As Single
Dim RowHeight As Single
Dim FooterHeight As Single
Dim FooterTop As Single
HeaderHeight = Printer.TextHeight("") * 1.5
RowHeight = Printer.TextHeight("")
FooterHeight = Printer.TextHeight("") * 2
FooterTop = Printer.ScaleHeight - FooterHeight
Do
PrintHeader Printer, Recordset
Printer.CurrentY = HeaderHeight
Do Until Recordset.EOF Or Printer.CurrentY > (FooterTop - RowHeight)
PrintRow Printer, Recordset
Loop
Printer.CurrentY = FooterTop
PrintFooter Printer, Recordset
Printer.NewPage
Loop Until Recordset.EOF
Printer.EndDoc
End Sub
Private Sub PrintHeader(Printer As Printer, Recordset As ADODB.Recordset)
Dim fldField As ADODB.Field
Printer.FontBold = True
For Each fldField In Recordset.Fields
Printer.Print fldField.Name; Tab(1);
Next
Printer.Print ""
Printer.Line Step(0, 0)-Step(Printer.ScaleWidth, 0)
Printer.FontBold = False
End Sub
Private Sub PrintRow(Printer As Printer, Recordset As ADODB.Recordset)
Dim fldField As ADODB.Field
For Each fldField In Recordset.Fields
Printer.Print fldField.Value; Tab(1);
Next
Printer.Print ""
End Sub
Private Sub PrintFooter(Printer As Printer, Recordset As ADODB.Recordset)
Printer.Line Step(0, 0)-Step(Printer.ScaleWidth, 0)
Printer.FontBold = True
Printer.Print "Printed: " & Now()
Printer.FontBold = False
End Sub
</code>Sv: Avbryta utskrift av text och fortsätta på ny sida.
Jag skall testa detta.
Mvh
Tobbe