Använd Printer-funktionen 2/2
Förord
Innehåll
»»
»
»
»
»
»
»
Relaterade artiklar
» Använd Printer-funktionen 1/2
Skriva siffror
Printer metoden skriver enkelt ut strängar och numeriska värden. För att skriva en sträng eller numeriska värden, placerar du värdet till höger om print metoden. Följande metod sänder nummer 1,2 och 3 till printer objektet för utskrift.
Printer.Print 1
Printer.Print 2
Printer.Print 3
När ditt program kommando kör dessa tre rader med kod, kommer Visual Basic att sända 1, 2 och 3 till skrivar objektet med varje nummer på en egen rad. Varje Print metod sänder en CR och LF (carrige return & linefeed) till skrivaren. Em ensam Print metod på en rad, såsom nedam, sänds en blank rad till skrivaren.
Printer.Print
VARNING: Print adderar ett space före alla positiva nummer som skrivs på sidan. Mellanslaget är ett osynligt plustecken finns.
Följande Print metod sänder två rader text till Printer objektet:
Printer.Print "Visual Basic gör att programmering"
Printer.Print "för Windows är enkelt."
När Windows print spooler går dessa rader att skriva ut, kommer följande att synas på pappret:
Visual Basic gör att programmering
för Windows är enkelt.
Skriva Variabler och kontroller
I kombination med värden, skriver Print metoden även variabler och kontroller. Följande exempel skriver innehållet i två variabler till skrivaren:
FirstName = "Charley"
Age = 24
Printer.Print FirstName
Printer.Print Age
Här är utskriften som producerats av dessa Printer metoder:
Charley
24
Kom ihåg att Visual Basic inte skickar någonting till skrivaren förrän koden som innehåller Print exekveras. Du kan använda Print metorder på lämpliga ställen i din kod som skall innehålla utskrifter när det behövs. Exempelvis, om det finns en kommando knapp som heter "Skriv Rapport", där knappens Click() händelse innehåller Print metoden.
Skriva uttryck
Om du endast kunde skriva individuella strängar, numeriska värden och variabler, skulle Print vara extremt begrändsad. Självklart är det inte så. Du kan kombinera strängar med värden och variabler till höger om Print kommandot för att bygga mer komplexa utskrifter. Följande kommandon skriver ut 31.
Printer.Print 25 + (3 * 2)
Beräkningen kan innehållar variabler, kontroller och konstanter, så som här:
Printer.Print sngFactor * lblWeight.Caption + 10
Om du vill skicka ett speciellt tecken till skrivaren, kan du använda Chr() funktionen. Följande uttryck producerar ett meddelande som innehåller citattecken markerat inuti den utskrivna strängen:
Printer.Print "Hon sa " & Chr(34) & "ja" & Chr(34) & " och gick vidare."
Alternativt:
Printer.Print "Hon sa, ""ja"" och gick vidare."
När kontrollen kommer till Print metoden, så översätts detta till skrivaren:
Hon sa "ja" och gick vidare.
NOTERA: Du kan inte skriva citattecken utan att använda Chr() funktionen. Vanligtvis använder Visual basic dessa för att bestämma var en sträng börjar och slutar.
Skriva flera värden
Ny Term: En print zon händer var 14:e tecken på sidan. När du behöver skriva ut flera värden på en rad, kan det göras genom att separera värden med ett semikolon och komma. Semikolonet tvingar tidigare värden att börja direkt efter varandra i utskriften. Komma tvingar värden att komma i nästa print zon. Följande två meddelande skrivs på olika rader:
Printer.Print "Försäljningen var
Printer.Print 4345.67
Genom att använda semikolon, tvingar du värdet att skrivas till höger om det tidigare:
Printer.Print "Försäljningen var "; 4345.67
Semikolonet gör samtidigt så att ett CRLF läggs till. Följande Print metod avslutar med ett semikolon.
Printer.Print "Företagsnamnet är ";
Detta släpande semikolon håller printerns huvud till slutet av meddelande som skall skrivas. Därför betyder det att oavsett hur mycket senare nästa printer kommando kommer, så kommer texten att skrivas efter det sist skrivna.
Printer.Print lblComName.Caption ` Finsh the line
Semikolon är trevligt när man skriver massor av värden med olika datatyper på samma rad. Följande print kommandon skriver all sin data på samma rad:
Printer.Print "Sales: "; curTotsales; "Region:"; intRegNum
Komman används fortfarande ibland för att påtvinga en utskrift i nästa zon. Följande print kommando skriver namnet på vart 14:e space på den skrivna raden:
Printer.Print strDivNamel, strDivName2, strDivName3
Oavsett hur lång eller kort varje sträng är, kommer nästa att skrivas i nästa zon. Det föregående exemplet borde se ut ungefär så här:
North NorthEast South
När du skriver en lista med tal eller korta strängar, kan komma enkelt låta dig bygga varje kolumn.
Använda fonter
De flesta Windows kompatibla skrivarna stödjer ett flertal fonter. Font-relaterade egenskaper är oftast användbara när man skriver titlar eller andra speicella meddelande i speciell storlek eller typ. Du kan specificera effektier till din text genom att modifiera fonten genom font egenskapen, som ses i tabellen ovan. Exempelvis, följande kod skriver med fetstil, kursivt, 60-punkters font (som är en inch), och därefter skriver ett meddelande till skrivaren:
Printer.FontBold = True
Printer.FontItalic = True
Printer.FontSize = 60
Printer.Print "Jag håller på att lära mig Visual Basic!"
Varning: Fontens egenskaper berör vidare utskrift. Därför, om du skriver ut flera rader med text och därefter ändrar fontstorleken, kommer text som du redan skrivit vara oförändrad. Visual Basic skriver bara kommande text med den nya fonten.
Bättre mellanrum med Spc() och Tab()
Print metoden tillåter användandet av inbäddade Spc() och Tab() funktioner som ger dig ytterligare kontroll över ditt programs utskrift. Spc() producerar en variabel med ett antal mellanslag i utskriften som bestäms genom argumentet som du sänder med Spc(). Följande Print metod skriver totalt 10 mellanslag mellan förnamnet och efternamnet:
Printer.Print strFirstName; Spc(10), strLastName
Argumentet du skickar till den inbäddade Tab() funktionen bestämmer i vilken kolumn det nästa skrivna tecknet skall hamna. I följande Print kommando, visas datum i den 50:e kolumnen på sidan:
Printer.Print Tab(50), dteDateGenerated
Såsom dessa exempel visar, om du skriver värden före och efter Spc() och Tab() funktionerna, separerar du värden som finns runt omkring de skrivna värdena som använder semikolon.
Tips: Spc() och Tab() ger dig mer kontroll över mellanskag än komma och semikolon gör.
I detta exempel visas lite kod som genererar och skriver två skattestatser för ett hus:
Taxl = TaxRate * HouseVal1
Tax2 = TaxRate * HouseVal2
TotalVal = HouseVal1 + HouseVal2
TotTaxes = TaxRate * TotalVal
Printer.Print "Husets värde"; Tab(20); "Skatt"
Printer.Print Format(HouseVal1, "Currency");
Printer.Print Tab(20); Format(Taxl, "Currency")
Printer.Print Format(HouseVal2, "Currency");
Printer.Print Tab(20); Format(Tax2, "Currency")
Printer.Print ` Skriver en blank rad
Printer.Print "Total skatt:"; Spc(5); Format(TotTaxes, "Currency")
Printer.NewPage
Printer.EndDoc
Så här kan utskriften se ut när programmet körts:
Husets Värde Skatt
$76,578.23 $9,189.39
$102,123.67 $12,254.81
Total skatt: $21,444.20
Tab(20) funktionen försäkrar att andra kolumnen, vilken innehåller skalle informationnen, är i rad. Notera även att semikolonet låter dig fortsätta skriva med Print metoden på samma rad utan att det fortsätter till nästa rad. Koden använder Spc() för att infoga fem mellanrum mellan titeln och Skatten. De två sista raderna försäkrar om att utskriften avslutas korrekt.
Börja att skriva ut
Den fysiska utskriften börjar inte förrän outputen släpps till print spoolern, eller om applikationen använder EndDoc metoden. När du skickar Print medtoden till skrivaren via printer objektet, byggs sidan upp men släpps inte förrän du skickar EndDoc metoten. EndDoc berättar för print spoolerna "jag är klart med min utskrift till dig, du kan skriva ut nu."Utan EndDoc kommer Windows samla på sig all utskrift och inte skriva förrän applikationen avslutas. Om du skulle skriva en applikation som användaren kör under dagen och skriver ut fakturor när kunden handlar, måste du använda EndDoc metoden i slutet av varje faktura-utskrift om du vill att den skall skrivas vid det tillfället.
I detta exempel skrivs ett meddelande till skrivaren och därefter signaleras det till Print spoolern att utskriften är klar att skrivas på papper. Utan EndDoc, kommer spoolerna att hålla utskriften tills applikationen innehåller en avslutande kod:
Printer.Print "Invoice #"; invnum
Printer.Print "Customer:"; cust(CCnt); Tab(20); "Final Sales"
Printer.Print "Amount of sale:"; Tab(20); Format(SaleAmt, "Currency")
Printer.Print "Tax:"; Tab(20); Format(tax, "Currency")
Printer.Print
Printer.Print "Total:"; Tab(20), Format(TotalSale, "Currency")
` Släpper jobbet för utskrift
Printer.EndDoc
Programmets innehåll kanske fortsätter och kör en process med annat data. EndDoc metoden försäkrar att utskriften som byggts i spoolern skrivs ut direkt. Om andra print metoder finns senare i programmet, kommer print spoolern att bygga om utskriften igen, släppa utskriften endast vid EndDoc proceduren eller om programmet avslutas.
Radbrytningar
När man skriver ut till en skrivare, måste du vara försiktig med att skriva i början av en ny sida när utskriften hoppar till nästa sida. Newpage metoden tvingar skrivaren att mata ut den aktiva sidan och fortsätta på nästa. Windows print spooler försäkrar att varje utskriven sida bryts korrekt vid den fysiskt sista raden. Därför , om skrivarens pappersläng är 66 rader och du skriver 67, kommer den 67:e raden att hamna överst på nästa sida. Det finns tillfällen när du vill skriva mindre än hela sidan. Du kan mata ut denna ej kompletta sidan genom att använda NewPage metoden. För att använda Newpage så använder du bara den så här:
Printer.NewPage
Notera: Kom ihåg att du faktiskt skriver till Windows print spooler och att din applikations utskrift inte direkt kontrollerar en fysisk skrivare. NewPage berättar alltså för Print spoolern att gå till en ny sida när print spoolern kommer till den raden i utskriften. Du måste komma ihåg att du använder en skrivare som stödjer många fonter och storlekar. Du kan alltid bestämma, i förväg hur många rader du vill skal få plats på en sida så länge du kontrollerar värdet i följande formel:
intNumLinesPerPage = Printer.Height / Printer.TextHeight("X")
Som tidigare, så är det height egenskapen som bestämmer höjden i twips på sidan eller vilket mätvärde som du vill anväda. TextHeight egenskapen bestämmer den fulla höjden på ett skrivet tecken. TextHeight mäts i twips om du inte har förändrat skalan genom att använda ScaleMode egenskapen. För utskrivna rapperter, kommer du troligen inte att använda ScaleMode metoden. Om du behöver ändra mätskalan, måste du även återställa skalan innan du räknar ut antalet utskrivna rader per sida:
Printer.ScaleMode = 1
ScaleMode accepterar följande värden:
Value | Named Literal | Description |
---|---|---|
0 | vbUser | A user-defined value |
1 | vbTwips | Measured in twips (the default) |
2 | vbPoints | Measured in points |
3 | vbPixels | Measured in pixels (the smallest unit addressable by your printer) |
4 | vbCharacters | Measured in characters (120x240 twips) |
5 | vbInches | Measured in inches |
6 | vbMillimeters | Measured in millimeters |
7 | vbCentimeters | Measured in centimeters |
Flytta till toppen på en ny sida
Printer.Print "Rapporten börjar på nästa sida..."
Printer.NewPage ` Gå till början på nästa sida
Printer.Print "Här kommer rapporten.."
Tips: Du kan använda Print metoden för att skriva ut din form direkt utan att använda en kontroll. Exempelvis, du kan skriva titel på formen som namngetts med frmAccts med detta kommando:
frmAccts.Print Spc(20); "XYZ, Co."
Du kan använda kontrollen så mycket som möjligt så att applikationens kod kan förändras och hantera texter som finns på kontrollerna, använd Print så fort din form behöver innehålla oförändrad text.
0 Kommentarer