Hej igen, Även om du ändrar ScaleMode till centimetrar så använder CurrentX och CurrentY twips. Det går 1440 twips på en tum och en tum är lika med 25,4 mm. Hej Jag var inne på sidan Mikael länkade till, men jag får inte riktigt till det. Göran Tack för tipset, det hade varit enklare om det kunnat gått med dom. Men dessa etiketter är färdigperforerade, bara att riva av när dom är färdigskrivna. Därav det måste varalite presition på utskriften. Det är sådana som sitter runt buskar och träd när man köper dom på en plantskola tex. Hej igen! Usch jag blir så sur när jag läser Era inlägg. Nej detta har jag inte läst, men det skall jag ta en titt på, verkar interisant. Nu har jag kollat på Sven Åke´s kodrader, och det utför ju det samma som jag har skrivit ovan fast på ett mer förfinat sätt. Så det var ju inte ens i närheten av någon lösning på problemet.Fast avstånd mellan printerutskrift
Denna gång hittar jag ingen lösning på mitt problem:)
Jag har en sådan där skrivare där man matar in papper som har hål i sidorna, Fast jag matar in etiketter med hål, Funktionen är ju den samma. Nu till mitt problem. Etiketterna är 19 millimeter breda, Hur skal jag göra i min utskrift så att när den loopat igenom så skall den mata ner så den börjar exakt 19 millimeter från det det började skriva på första raden. Jag har testat med att ändra till olika fonter, fontstorlekar mm mm för att få resultatet så nära som möjligt. Nu har ju fonten Ariel, rad 1 är storleken 18, rad 2 & 3 är storleken 10 + att jag laggt till en tom rad i slutet. Nu skriver den ut 99% utskrifter. Den börjar bra fast efter 15 etiketter så ligger utskriften 2 mm längre upp på etiketten. Skall man som jag/vi, firman skriva ut 1000 tals med etiketter så måste man ju justera i mellan åt. Man vill ju att den bara matar på och allt blir bra, inte som nu att man måste justera mellan var 15- 20 etikett.
Någon eldsjäl här på forumet som har en bra lösning så mottages den med stor tacksamhet.
Här kommer min utskrifts kod.
<code>
Dim i As Integer
Dim J As Integer
cd.ShowPrinter
For J = 1 To ListView2.ListItems.Count
For i = 1 To ListView2.ListItems(J).ListSubItems(3).Text '<Antal etiketter av varje som skall skrivas ut
Printer.ScaleMode = vbCentimeters
Printer.FontName = "Arial"
Printer.FontBold = False
If Y > 1 Then
Printer.CurrentY = Y + 1 'Det händer inget om jag ändrar denna till 1.9 = 19 millimeter.
End If
Printer.FontSize = Text5.Text 'Fontstorlek
Y = 0
Printer.CurrentX = Text8.Text 'Vänstermarginal
Printer.Print ListView2.ListItems(J).Text
Printer.CurrentX = Text8.Text 'Vänstermarginal
Printer.FontSize = Text6.Text 'Fontstorlek
Printer.Print ListView2.ListItems(J).ListSubItems(1).Text
Printer.FontSize = Text7.Text 'Fontstorlek
Printer.CurrentX = Text8.Text 'Vänstermarginal
Printer.Print ListView2.ListItems(J).ListSubItems(2).Text
Printer.Print ""
Next i
Next J
Printer.EndDoc
</code>
//JockeSv: Fast avstånd mellan printerutskrift
Här kanske finns något användbart: http://www.devx.com/getHelpOn/10MinuteSolution/18219/0/page/3
Edit: Det var nog bara Width och Height som inte påverkades av ScaleMode, men det borde fungera om du använder twips eller millimetrar som ScaleMode istället eftersom du inte kan tilldela CurrentX eller CurrentY decimaltal.
/MickeSv: Fast avstånd mellan printerutskrift
Det här är ju inget direkt svar på din fråga men har du inte övervägt att skriva ut etiketterna på annat sätt (det kanske inte går, vad vet jag)?
Finns ju andra typer av skrivare, exempelvis http://www.dustin.se/DacsaPortal/?ProdID=5010085570
som är en etikettskrivare. Använder den själv till att skriva ut hyllkantsetiketter bl.a. och den funkar utmärkt. Hämtar uppgifter från databasen/prislistan och kör på. Billigt är det också.Sv:Fast avstånd mellan printerutskrift
Sv: Fast avstånd mellan printerutskrift
Nu är det snart kört, hjärnknölen blöder av tänkande. Har nu 2 lösningar ingen av dom vill som jag, så kanske ni kan bistå någon av dom. Den första. Jag har lagt till en tom rad från originalet, och efter 15 etiketter så passar det precis in om jag tar bort den 4:de raden. Då hamnar texter rätt igen. Men loppen som skall köras 15 ggr och sedan hoppa vidare får jag inte till. se kod
<code>For J = 1 To ListView2.ListItems.Count
For i = 1 To ListView2.ListItems(J).ListSubItems(3).Text ' antalet av varje etikett
For L = 1 To Text10.Text 'Alla etiketter i utskriften, inklusive antal av varje kan vara 4 sorter *30 av varje sort
Printer.ScaleMode = 6 'vbmillimeters
Printer.FontName = "Arial"
Printer.FontSize = Text5.Text
Printer.CurrentX = Text8.Text 'Vänstermarginal
Printer.Print ListView2.ListItems(J).Text
Printer.FontSize = Text6.Text
Printer.CurrentX = Text8.Text 'Vänstermarginal
Printer.Print ListView2.ListItems(J).ListSubItems(1).Text
Printer.FontSize = Text6.Text
Printer.CurrentX = Text8.Text 'Vänstermarginal
Printer.Print ListView2.ListItems(J).ListSubItems(2).Text
Printer.CurrentX = Text8.Text 'Vänstermarginal
Printer.FontSize = "6"
Printer.Print "|"
If L = 15 Then 'Försöker skippa en rad efter 15 utskrifter
GoTo 100
Else
Printer.CurrentX = Text8.Text 'Vänstermarginal
Printer.FontSize = "5"
Printer.Print "|"
End If
100
Next L
Next i
Next J
</code>
Den andra lösningen jag kan tänka mig är att man gör ett streck med printer.line 19 mm i lodrätt format, och sedan ha texten till höger om denna. Men hur jag än gör så kommer strecket på ena raden och texten på nästa med osynk som följd efter x antal etiketter.
Tack på förhand
//JockeSv:Fast avstånd mellan printerutskrift
Frågan är lika gammal som programering. Har Ni inte läst något om detta ?.
Typexempel:
<code>
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
</code>Sv: Fast avstånd mellan printerutskrift
Var har du hittat det? så man vet vad alla krummelurerna betyder:)
Tack för tippset
//JockeSv:Fast avstånd mellan printerutskrift