Skriv ut innehållet från en Richtextbox
Förord
I denna artikel tänkte jag visa hur man kan få till utskrifter från en RichText-kontroll. Att använda denna kontroll för utskrifter erbjuder en rad fördelar. Det är t ex väldigt enkelt att formatera text, sätta tabbar och ange position för textavsnitten dokumentet. Dessutom skrivs sidorna ut snabbare än om du t ex använder Word med OLE. Du slipper också vara beroende av att användaren har rätt version Word installerad och därigenom slippa brottas med de konflikter som kan lätt kan uppstå.
Infoga en RichTextBox
Börja med att rita upp RichTextBox på ditt formulär. Finns den inte med i verktygslådan så får du bocka för Microsoft RichTextBox under References i Project-menyn. Döp sedan denna till exempelvis RTF. Sätt sedan egenskapen Visible till False. I exemplet som följer tänker jag mig att läsa in data från en vanlig textfil som jag sedan skriver in i RTF-rutan. Först av allt måste vi förvissa oss om att RTF-rutan är tom och innehållslös när vi börjar och det gör du lämpligen med denna kod:
RTF.SelStart = 0
RTF.SelLength = Len(RTF.Text)
RTF.SelText = ""
Bestäm sedan tabbarnas antal och position:
RTF.SelTabCount = 7
RTF.SelTabs(0) = 0
RTF.SelTabs(1) = 1900
RTF.SelTabs(2) = 3800
RTF.SelTabs(3) = 4100
RTF.SelTabs(4) = 5000
RTF.SelTabs(5) = 5800
RTF.SelTabs(6) = 6200
Nästa steg blir att ange formatet för rubriken i dokumentet. Här vill vi ha typsnittet Verdana med fet stil och storleken 18 bildpunkter samt blå färg. Det fixar vi så här:
' Formatera rubriktexten
RTF.SelFontSize = 18
RTF.SelFontName = "Verdana"
RTF.SelBold = True
' Stäng av kursiv och understruken stil
RTF.SelItalic = False
RTF.SelUnderline = False
' Vänsterjustera texten
RTF.SelAlignment = 0
' Välj blå färg till rubriken
RTF.SelColor = QBColor(9)
Sedan namnger vi rubriken till något lämpligt. Till mitt exempel skriver jag ut en adresslista. Sedan gör jag två radmatningar med Chr(10):
RTF.SelText = "Adresslista" & Chr(10) & Chr(10)
Efter att det är klart är det dags att namnge kolumnrubrikerna och här får vi användning av tabbarna vi satte tidigare. För att flytta till nästa tabläge använder vi oss av ASCII-värdet 9 på samma sätt som vi använder värdet 10 för radmatningar.
' Formatera...
RTF.SelFontSize = 10
RTF.SelFontName = "Verdana"
RTF.SelBold = True
RTF.SelItalic = False
RTF.SelUnderline = False
RTF.SelAlignment = 0
' Ange svart text
RTF.SelColor = QBColor(0)
' Skriv in kolumnrubrikerna.
RTF.SelText = "Namn" & Chr(9)
RTF.SelText = "Adress" & Chr(9)
RTF.SelText = "Postnr" & Chr(9)
RTF.SelText = "Ort" & Chr(9)
RTF.SelText = "Telefon" & Chr(9)
RTF.SelText = "Ålder" & Chr(9)
RTF.SelText = "Skonr" & Chr(10)
För att fylla din RTF-ruta så måste du ha data tillgängliga i en textfil. Se till att det finns data i sju avdelningar på varje rad i textfilen avgränsade med kommatecken.
Det skulle kunna se ut något i den här stilen (namnen är fingerade):
"Ann Gerhardsson", "Storgatan 111", "333 44", "Storsnärle", "133 47", "17", "37" "Bengt Karlsson", "Smedjebacken 2", "565 21", "Nöbble", "143 67", "69", "44" "Pia Grenfors", "Älggatan 5", "199 18", "Undefors", "216 12", "29", "34" "Ulf Ahlbom", "Fondstigen 71", "526 12", "Olskrokshult", "29 29 71", "23", "31" "Harald Hårfager", "Flintastigen 1", "522 56", "Viskaborg", "12 40 63", "82", "44" "Staffan Berg", "Gökgatan 32", "574 38", "Vetlanda", "122 63", "36", "45" "Jensa Stridh", "Borggatan 33", "141 89", "Övlandehult", "989 12 73", "55", "45" "Gertrud Hansson", "Pl 3431", "572 66", "Hornsstad", "14 22 66", "70", "35" "Fläsk-Tarzan", "Hundgatan 34", "345 22", "Biffköping", "429 28", "55", "46" "Olle Turesson", "Ögatan 44", "888 88", "Östad", "333 63", "54", "42" |
Sedan är det dags att fylla dokumentet med de uppgifter som finns sparade i textfilen.
Skriv in följande kod för att loopa genom hela textfilen (Textfile.txt) och sedan skriva in data i din RTF-ruta.
f = Freefile
Open "Textfile.txt" For Input As f
Do While Not EOF(f)
Input #f, Namn, Adress, Postnummer, Ort, Telefon, Ålder, Skonummer
RTF.SelFontSize = 10
RTF.SelFontName = "Verdana"
RTF.SelBold = True
RTF.SelItalic = False
RTF.SelUnderline = False
RTF.SelAlignment = 0
RTF.SelColor = QBColor(0)
' Hämta in data från textfil och lägg in dessa i sju variabler.
RTF.SelText = Namn & Chr(9)
RTF.SelText = Adress & Chr(9)
RTF.SelText = Postnummer & Chr(9)
RTF.SelText = Ort & Chr(9)
RTF.SelText = Telefon & Chr(9)
RTF.SelText = Ålder & Chr(9)
RTF.SelText = Skonummer & Chr(10)
Loop
Close f
Ställ in marginalerna
Det som återstår nu är att ställa in marginalerna på dokumentet och till detta hittar du ett utmärkt exempel under Tips & Tricks här på SAND Online som du kan använda dig av. Länken till denna kod hittar du här.I detta exempel finner du diverse globala procedurer och anrop till Windows API som bl a ser till att sätta marginalerna på ditt dokument efter de värden du själv ställer in. Du ställer in marginalerna genom att anropa subrutinen PrintRTF:
PrintRTF RTF, 1000, 1200, 1440, 1440
Var denna artikeln användbar?
Om du gör någon intressant som grund av detta material så skicka gärna det med ett mail eller bifoga en länk till mig så presenterar jag detta som ytterligare exempelfiler för kursen. Om detta innehållet är felaktigt eller du lärt dig fler finesser så skriv gärna en rad eller varför inte en egen kurs baserat på dina erfarenheter. Sänd gärna in dina tips till denna kurs./Staffan Berg
0 Kommentarer