Ska göra ett program som hanterar olika blanketter (VB6). De innehåller många textfält och kryssrutor. De är i A4 format på PDF, men har gjort bilder av dem och innan jag börjar på något vill jag veta vad som är bäst? Lägga bilden som bakgrund i formen, eller lägga en picturebox på hela formen? Sen lägger jag på textboxar och labels för ifyllnad. Till sist ska jag kunna skriva ut hela sidan sedan och få med alla ifyllda fält. Jag hade nog lagt det i en picturebox, När du sedan skriver ut det så kan du styra textfält och kryssrutor med currentx(vänstermarginal) och currenty(topmarginal) Kolla även PrinterObjektet. Tack JK & SÅP. Lite kod att sätta sig in i. Hinner tyvärr inte förrän till helgen, men jag återkommer. Blankett
Sv: Blankett
jag har gjort något liknande för längesedan, där jag sedan kunde spara som en bild och skriva ut pappret. Nedan kommer en kod på hur du sparar text till en .BMP bild, sedan ändrar du så att kryssrutorna kommer där du vill.
<code>
Private Sub Command1_Click()
Picture1.CurrentX = 50 'Vänstermarginal
Picture1.FontSize = 15
Picture1.Print Text1.Text
Picture1.CurrentY = 450 'Topmarginal
Picture1.CurrentX = 50
Picture1.FontSize = 8
Picture1.Print Text2.Text
Picture1.CurrentY = 450 'Topmarginal
Picture1.Print Tab(30); Text4.Text
Picture1.Picture = Picture1.Image 'skriv ut till pictureboxen
'Spara
Dim sPath As String
sPath = App.Path & "\" & Text1 & ".bmp"
SavePicture Picture1.Image, sPath
End Sub
</code>Sv:Blankett
Det är en halv "könis" att få till en bra/snygg Printerrutin.
Jobbigt men skönt när det blir snyggt och korrekt.
EX: Lär dig använda Tab
<code>
Private Sub mnuPrint_Click()
Dim strRubrik As String, SplitRubrik() As String, i
Dim TotalArr() As String, retString As String, recCount
Dim ValueArr() As String, lstCount, j, oj
dtaBasData.Recordset.MoveFirst
For i = 0 To lstFonder.ListCount - 1
j = dtaBasData.Recordset(12)
If j > oj Then oj = j
dtaBasData.Recordset.MoveNext
Next 'i
Call mnuTotal_Click
On Error GoTo NoPrint
CmDialog.Flags = &H100000 Or &H4
CmDialog.ShowPrinter
Printer.Orientation = 1
Printer.ScaleMode = 7
'ScaleMod = centimeter
'******* Print Huvud ***********
Printer.PaintPicture picPrinter.Picture, 2, 0.5, 3, 2
Printer.FontName = "Arial"
Printer.FontBold = True
Printer.CurrentX = 2: Printer.CurrentY = 3
Printer.FontSize = 16
SplitRubrik = Split(PathFondData, "\")
strRubrik = SplitRubrik(UBound(SplitRubrik))
Printer.Print Left$(strRubrik, Len(strRubrik) - 4)
Printer.FontSize = 12
Printer.FontBold = True
Printer.CurrentX = 12.8: Printer.CurrentY = 1.5
Printer.Print lblPanDatum
Printer.FontSize = 10
Printer.FontBold = True
Printer.CurrentX = 2: Printer.CurrentY = 3.8
Printer.Print "Senaste UppDatering " & _
DatumFormat(oj)
Printer.FontSize = 12
Printer.FontBold = True
Printer.DrawStyle = 1
Printer.DrawWidth = 3
Printer.Line (1.7, 4.6)-(18.2, 12.8), , B
Printer.Line (1.8, 4.7)-(18.3, 12.9), , B
Printer.PaintPicture picDiagram.Picture, 3, 5, 15, 7
Call PrintPlotta
Printer.FontSize = 10
Printer.FontBold = True
Printer.CurrentX = 2: Printer.CurrentY = 4.8
Printer.Print lblVertical(6)
Printer.CurrentX = 2: Printer.CurrentY = 6.2
Printer.Print lblVertical(5)
Printer.CurrentX = 2: Printer.CurrentY = 7.6
Printer.Print lblVertical(4)
Printer.CurrentX = 2: Printer.CurrentY = 9
Printer.Print lblVertical(3); " %"
Printer.CurrentX = 2: Printer.CurrentY = 10.4
Printer.Print lblVertical(2)
Printer.CurrentX = 3.2: Printer.CurrentY = 11.4
Printer.Print lbLeftYear
Printer.CurrentX = 16.9: Printer.CurrentY = 11.4
Printer.Print lblRightYear
Printer.CurrentX = 2: Printer.CurrentY = 11.7
Printer.Print lblVertical(1)
Printer.CurrentX = 3.2: Printer.CurrentY = 12.1
Printer.Print lblMonth(1)
Printer.CurrentX = 4.4: Printer.CurrentY = 12.1
Printer.Print lblMonth(2)
Printer.CurrentX = 5.6: Printer.CurrentY = 12.1
Printer.Print lblMonth(3)
Printer.CurrentX = 7: Printer.CurrentY = 12.1
Printer.Print lblMonth(4)
Printer.CurrentX = 8.2: Printer.CurrentY = 12.1
Printer.Print lblMonth(5)
Printer.CurrentX = 9.4: Printer.CurrentY = 12.1
Printer.Print lblMonth(6)
Printer.CurrentX = 10.7: Printer.CurrentY = 12.1
Printer.Print lblMonth(7)
Printer.CurrentX = 12: Printer.CurrentY = 12.1
Printer.Print lblMonth(8)
Printer.CurrentX = 13.2: Printer.CurrentY = 12.1
Printer.Print lblMonth(9)
Printer.CurrentX = 14.5: Printer.CurrentY = 12.1
Printer.Print lblMonth(10)
Printer.CurrentX = 15.7: Printer.CurrentY = 12.1
Printer.Print lblMonth(11)
Printer.CurrentX = 16.9: Printer.CurrentY = 12.1
Printer.Print lblMonth(12)
Printer.CurrentX = 3: Printer.CurrentY = 13
Printer.FontSize = 10
dtaBasData.Recordset.MoveLast
recCount = dtaBasData.Recordset.RecordCount - 1
dtaBasData.Recordset.MoveFirst
i = 0
Do Until i > recCount
If dtaBasData.Recordset(17) = "x" Then
Printer.Print ; Tab(11); dtaBasData.Recordset(10) _
; Tab(40); dtaBasData.Recordset(0); "." _
; Tab(45); dtaBasData.Recordset(1) _
; Tab(71); "StartKurs : " & dtaBasData.Recordset(5) _
; Tab(92); dtaBasData.Recordset(13)
Printer.Print ; Tab(11); "Värde vid start : "; CLng(dtaBasData.Recordset(6)) & " Kr" _
; Tab(45); "Värde idag : "; dtaBasData.Recordset(15) _
; Tab(96); dtaBasData.Recordset(14)
dtaBasData.Recordset.MoveNext
i = i + 1
Printer.Print
Else
ValueArr = Split(dtaBasData.Recordset(17), Chr$(182))
Printer.Print ; Tab(11); dtaBasData.Recordset(10) _
; Tab(40); dtaBasData.Recordset(0); "." _
; Tab(45); dtaBasData.Recordset(1) _
; Tab(71); "StartKurs : " & ValueArr(2) _
; Tab(92); dtaBasData.Recordset(13)
Printer.Print ; Tab(11); "Värde vid start : "; ValueArr(3); " Kr" _
; Tab(45); "Värde idag : "; dtaBasData.Recordset(15) _
; Tab(96); dtaBasData.Recordset(14)
dtaBasData.Recordset.MoveNext
i = i + 1
Printer.Print
End If
Loop
Printer.FontSize = 11
Printer.Print ; Tab(10); "Total Summa för konto :"
lstCount = lstTotal.ListCount - 1
i = 0
Printer.Print
dtaBasData.Recordset.MoveFirst
If dtaBasData.Recordset(2) <> "999 999" Then
Do Until i > lstCount
retString = PrintTotal(lstTotal.List(i))
TotalArr = Split(retString, "/")
Printer.Print ; Tab(10); TotalArr(0); Tab(39); _
TotalArr(1); Tab(66); TotalArr(2)
Printer.Print ; Tab(39); TotalArr(3); Tab(66); _
TotalArr(4); Tab(82)
i = i + 1
Printer.Print
Loop
End If
PrintOk:
Printer.EndDoc
panTotal.Visible = False
lblTotal = ""
picDiagram.SetFocus
Exit Sub
NoPrint:
If Err <> 32755 Then
MsgBox ("Fel i PrintRutinen")
Call LoggError("Fel i Printrutinen mnuPrint " & Str$(Err))
End If
Resume PrintOk
End Sub
</code>Sv: Blankett
Tack!
Peter