Hei !
Mulla lomakkeella tekstilaatikko, johon voi syöttää tekstiä useammalle riville. Tulostettaessa tätä printer oliolla ilmeni pieni ongelma... vasen marginaali (currentX) kohdassa 20 eka rivi tulostui nätisti, mutta seuraavat 0-pisteestä. Mikä avuksi?
Mulla lomakkeella tekstilaatikko, johon voi syöttää tekstiä useammalle riville. Tulostettaessa tätä printer oliolla ilmeni pieni ongelma... vasen marginaali (currentX) kohdassa 20 eka rivi tulostui nätisti, mutta seuraavat 0-pisteestä. Mikä avuksi?
Vastaukset 5
Vanhimmat
Print -komento nollaa CurrentX arvon. CurrentX-arvo pitää asettaa uudelleen jokaisen Printer.Print -komennon jälkeen.
Tiedän, että ongelma johtuu juuri tuosta. Mutta missä välissä currentX asetetaan uuteen arvoon, kun monirivisen tekstiruudun tulostus kuitenkin onnistuu yhdellä ja ainoalla print komennolla - se tekee laatikossa olevat rivinvaihdot automaattisesti
Jos käytetään lausetta:
Printer.Print Text1.Text
niin en tiedä millä nuo rivin vaihdot saisi onnistumaan niin, että tulostus alkaisi aina CurrentX:n määräämästä paikasta. Alla mielestäni helppo tapa, jolla onnistuu monirivisen TextBoxin tulostus
---------------------------------
Dim aTexts As Variant
Dim i As Integer
aTexts = Split(Text1.Text, vbCrLf)
For i = 0 To UBound(aTexts) - 1
Printer.CurrentX = 2000
Printer.Print aTexts(i)
Next i
Call Printer.EndDoc
Hei !
Ja kiitos kovasti avusta!!! Sain ongelman jo ratkaisua - melkein. Vasen reuna tulee nätisti, mutta laatikossa ollut viimeinen tekstirivi jää tulostumatta?
Alla käyttämäni koodipätkä, sehän lähes suora kopio antamastasi.
aTexts = Split(frmSyottoTesti.txtPalaute.Text, vbCrLf)
For i = 0 To UBound(aTexts) - 1
Printer.CurrentX = 20
Printer.Print aTexts(i)
Next i
...For i = 0 To UBound(aTexts) - 1 -rivi
For i = 0 To UBound(aTexts)
oletin että lopussa on vbCrLf, joten se -1 oli siellä, jotta tyhjää alkiota ei tulostettaisi.