Hoppas jag inte blir hatad nu bara för att jag klistrar in en lång bit från mitt progg men men... här kommer det... oj... glömde nästan... min fråga är går det inte att göra detta på något lättare sätt med mindre kod? inget svar... tar det som att det inte finns något bättre sätt att skriva ut på. Hej Detta är ett förslag där du skriver ut allt med en print. sliper du raderna där du sätter CurentX. Fast eftersom strängen måste redimensioneras för varje rad där text läggs till är det inte det snyggaste sättet. Så därför är det svårt att ge något bra förslag för printer objektet. Du skulle kunna använda dig av en datareport eller Crystal reports. Men det är ju lite onädigt för en enkel utskrift som denna. Hejkanske någon kan ge några tips
Case 1 'Skriv ut
With CommonDialog1
'Om man trycker på avbryt så går den till Avbryt:
.CancelError = True
On Error GoTo Avbryt
'gör så att man inte kan välja specifika sidor att skriva ut
.Flags = cdlPDNoSelection
'visar Printer rutan
.ShowPrinter
On Error GoTo 0
End With
'start position att skriva ut på
Printer.CurrentX = skrivareX
Printer.CurrentY = 100
Printer.FontSize = 14
On Error GoTo skipline
Printer.FontName = "Courier New"
On Error GoTo 0
skipline:
'skriver ut till skrivaren
Printer.Print ">-----------------------------------<"
Printer.CurrentX = skrivareX
Printer.Print "> Adresslista exporterad text-fil <"
Printer.CurrentX = skrivareX
Printer.Print ">-----------------------------------<"
Printer.CurrentX = skrivareX
Printer.Print
Printer.CurrentX = skrivareX
Printer.Print "Smeknamn: "; txtAdressLista(6).Text
Printer.CurrentX = skrivareX
Printer.Print
Printer.CurrentX = skrivareX
Printer.Print "----------<Adessuppgifter>-----------"
Printer.CurrentX = skrivareX
Printer.Print
Printer.CurrentX = skrivareX
Printer.Print "Förnamn: "; txtAdressLista(0).Text
Printer.CurrentX = skrivareX
Printer.Print "Efternamn "; txtAdressLista(1).Text
Printer.CurrentX = skrivareX
Printer.Print "Ort: "; txtAdressLista(3).Text
Printer.CurrentX = skrivareX
Printer.Print "Adress: "; txtAdressLista(2).Text
Printer.CurrentX = skrivareX
Printer.Print "Postnummer: "; txtMskAdressLista(0).Text
Printer.CurrentX = skrivareX
Printer.Print
Printer.CurrentX = skrivareX
Printer.Print "----------<Telefon nummer>-----------"
Printer.CurrentX = skrivareX
Printer.Print
Printer.CurrentX = skrivareX
Printer.Print "Telefon hem: "; txtMskAdressLista(1).Text
Printer.CurrentX = skrivareX
Printer.Print "Telefon arbete: "; txtMskAdressLista(2).Text
Printer.CurrentX = skrivareX
Printer.Print "Mobil nummer: "; txtMskAdressLista(3).Text
Printer.CurrentX = skrivareX
Printer.Print
Printer.CurrentX = skrivareX
Printer.Print "--------<Peronnummer & Ålder>--------"
Printer.CurrentX = skrivareX
Printer.Print
Printer.CurrentX = skrivareX
Printer.Print "Personnummer: "; txtMskAdressLista(4).Text
Printer.CurrentX = skrivareX
Printer.Print "Ålder: "; txtMskAdressLista(6).Text
Printer.CurrentX = skrivareX
Printer.Print
Printer.CurrentX = skrivareX
Printer.Print "--------<Indernet uppgifter>---------"
Printer.CurrentX = skrivareX
Printer.Print
Printer.CurrentX = skrivareX
Printer.Print "Hemsida: "; txtAdressLista(7).Text
Printer.CurrentX = skrivareX
Printer.Print "E-Post1: "; txtAdressLista(4).Text
Printer.CurrentX = skrivareX
Printer.Print "E-Post2: "; txtAdressLista(5).Text
Printer.CurrentX = skrivareX
Printer.Print "ICQ: "; txtMskAdressLista(5).Text
Printer.CurrentX = skrivareX
Printer.Print
Printer.CurrentX = skrivareX
Printer.Print "------------<Kommentar>--------------"
Printer.CurrentX = skrivareX
Printer.Print
Printer.CurrentX = skrivareX
Printer.Print "Komentar: "; txtAdressLista(8).Text
Printer.CurrentX = skrivareX
Printer.Print
Printer.CurrentX = skrivareX
Printer.Print "-------------------------------------"
'avslutar utsktiften
Printer.EndDoc
hoppas ni förstod något och vad jag vill ha hjälp med... tack på förhand
//DoRsalSv: kanske någon kan ge några tips
Sv: kanske någon kan ge några tips
Har inte analyserat i detalj men mina
komplicerade PrinterRutiner brukar se ut så där
mvh
Sven
En sak kan man tillägga i det här fallet och det är
att det oftast är betydligt effektivare att lista upp en
massa rader som du gjort än att försöka tillverka
listiga Loopar som For och Do Loop.
Du får bättre kontroll på vad varje moment utför
Vidare så tar PrinterBuffern den tid den tar så du
vinner inget på att överarbeta
DSSv: kanske någon kan ge några tips
Dim sTemp As String
sTemp = sTemp & ">-----------------------------------<" & vbCrLf
sTemp = sTemp & "> Adresslista exporterad text-fil <" & vbCrLf
sTemp = sTemp & ">-----------------------------------<" & vbCrLf
sTemp = sTemp & vbCrLf
sTemp = sTemp & "Smeknamn: " & txtAdressLista(6).Text & vbCrLf
sTemp = sTemp & vbCrLf
sTemp = sTemp & "----------<Adessuppgifter>-----------" & vbCrLf
sTemp = sTemp & vbCrLf
sTemp = sTemp & "Förnamn: " & txtAdressLista(0).Text & vbCrLf
sTemp = sTemp & "Efternamn " & txtAdressLista(1).Text & vbCrLf
sTemp = sTemp & "Ort: " & txtAdressLista(3).Text & vbCrLf
sTemp = sTemp & "Adress: " & txtAdressLista(2).Text & vbCrLf
sTemp = sTemp & "Postnummer: " & txtMskAdressLista(0).Text & vbCrLf
sTemp = sTemp & vbCrLf
sTemp = sTemp & "----------<Telefon nummer>-----------" & vbCrLf
sTemp = sTemp & vbCrLf
sTemp = sTemp & "Telefon hem: " & txtMskAdressLista(1).Text & vbCrLf
sTemp = sTemp & "Telefon arbete: " & txtMskAdressLista(2).Text & vbCrLf
sTemp = sTemp & "Mobil nummer: " & txtMskAdressLista(3).Text & vbCrLf
sTemp = sTemp & vbCrLf
sTemp = sTemp & "--------<Peronnummer & Ålder>--------" & vbCrLf
sTemp = sTemp & vbCrLf
sTemp = sTemp & "Personnummer: " & txtMskAdressLista(4).Text & vbCrLf
sTemp = sTemp & "Ålder: " & txtMskAdressLista(6).Text & vbCrLf
sTemp = sTemp & vbCrLf
sTemp = sTemp & "--------<Indernet uppgifter>---------" & vbCrLf
sTemp = sTemp & "Hemsida: " & txtAdressLista(7).Text & vbCrLf
sTemp = sTemp & "E-Post1: " & txtAdressLista(4).Text & vbCrLf
sTemp = sTemp & "E-Post2: " & txtAdressLista(5).Text & vbCrLf
sTemp = sTemp & "ICQ: " & txtMskAdressLista(5).Text & vbCrLf
sTemp = sTemp & "------------<Kommentar>--------------" & vbCrLf
sTemp = sTemp & "Komentar: " & txtAdressLista(8).Text & vbCrLf
sTemp = sTemp & "-------------------------------------" & vbCrLf
Printer.Print sTempSv: kanske någon kan ge några tips
Ett litet tips till.Du kan sätta Printer.ScaleMode = 7 (cm)
sedan kan du disponera ditt A4 genom att mäta med
linjal i cm var du vill ha de olika text och bildraderna.
Du sätter CurrentX och CurrentY i cm exakt som du
har uppmätt på pappert.
Har du en bild kan du skala den efter behov ex.
Printer.PaintPicture Picture1, 2, 2, 18, 7
kommer att printa Picture1 2 cm in 2cm ner
18 cm bred 7 cm djup.
mvh
Sven