Richtextbox - en genomgång
Förord
Denna artikel kommer jag att gå igenom hur man använder en RTB(Rich Textbox). RTB har en mängd olika funktioner, ändra teckensnitt, storlek på text, färger, spara, öppna, skriva ut och mycket mer. Jag kommer att ta upp totalt 24 olika funktioner som finns i RTB som är vanligt i textredigerare. Ni kan även ladda ner bifogande Project om ni vill testa de olika funktionerna.Innehåll
»»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
I denna artikel kommer att utgå från att ni kan grundera i programmering. Jag kommer även att använda mig av CommonDialog Cotrol vid vissa situationer i kodandet. Men eftersom jag inriktar mig på RTB komponenten så kommer jag inte ta upp mycket om just CommonDialog, det finns däremot en grundkurs om denna kontroll här: commondialog.asp
För att lägga in en RTB i din form så måste man först lägga till komponenten, det gör man enklast genom att trycka Ctrl + T eller Välja menyn Project och sen Components. Sedan bläddrar ni ner tills ni hittar ”Microsoft Rich Textbox Control …”, lägg till den genom att markera och sedan klicka på OK.
En ny ikon kommer at dyka upp på komponent listan till vänster. Det är det bara att markera den och dra ut den på lämpligt ställe på formen.
Här kommer jag att ta upp några av de inställningar som kan göras i designläge i properties rutan. Jag tar bara upp sådant som är speciellt för just RTB komponenten.
AutoVerbMenu – Med denna kan du aktivera eller inaktivera om du vill ha en standard popup-meny när du högerklickar på textruan, innehållande, Undo, Cut, Copy, Paste och Delete.
DisableNoScroll – Om man sätter denna till True så kommer scrollbar att visas hela tiden och inte bara när dom behöver användas.
FileName – Här kan du väja om du vill att programmet ska ha en specifik text fil startad i textrutan när programmet startas.
HideSelection – Denna avgör om du vill att markerad text ska vara markerad eller inte när du klickar på någon annan kontroll, denna bör man sätta till False om man ska göra exempelvis en textredigerare så att inte markeringen försvinner om man exempelvis vill ändra teckensnitt eller textstorlek.
MaxLength – Här kan du specificera hur många tecken som maximalt ska få skrivas i textrutan om värdet är 0 så är det ingen begränsning.
Multiline – Avgör om du ska kunna skriva fler än en rad text eller inte. Ska självklart var True om man gör en textredigerare.
Rightmargin – Sätter högermarginal.
Scrollbars – Här kan man välja om man vill ha scollbars. Finns fyra val, None, Horisontal, Vertical eller Both.
Nu är det dags för att visa lite kodande, här kommer jag att visa totalt 23 funktioner som man kan göra med Rich Textbox. Observera däremot att jag har gjort koden så kort som möjligt, dvs jag har inte lagt in någon felhanteringskod. Skulle bli väldigt lång kod och betydligt svårare att förstå om jag skulle eliminera alla eventuella buggar.
Det den här koden gör att den via CommonDialog1 öppnar en öppnings ruta, filtret säger vilka filer som ska vara möjliga att öppna, i detta fall RTF och TXT. Sedan finns det en funktion i RTB som heter LoadFile, med denna funktion kan man enkelt öppna TXT och RTF filer. Det man skriver in efter LoadFile är Filnamnet och vars filen ligger, i detta fall så får vi det från CommonDialog1.FileName. Man kan även skriva in vilket format man vill öppna i om man exempelvis skriver rtbText.LoadFile (CommonDialog1.FileName), rtfText så kommer den öppna alla RTF filer som TXT format och då visas även taggarna som bestämmer fäger m.m. i RTF-formatet.
Detta fungerar Väldigt lik Öppna. Det är samma sak här som med öppna att vi måste skriva in om vi vill spara det som TXT format annars sparas det som RTF. Skillnaden mellan denna kod och öppna koden är att jag här använder mig av FilterIndex på CommonDialog1 kontrollern vilket behövs för att bestämma om det ska sparas som RTF eller TXT. Det den gör exakt är att om man valt första valen (RTF) när man sparar så väljer den via Select Case att spara som RTF och om man valt andra valet (TXT) så kommer den att spara som TXT format.
Även när det gäller typsnitt är CommonDialog det ultimata valet. Det finns en hel del flaggor(Flags) att välja på. Jag rekommenderar att ni tar en koll i CommonDialog kursen om ni vill veta mer om dom, det står även bra i MSDN hjälpen. I detta tillfälle har jag valt att den ska visa både skärmfonter och skrivarfonter plus möjlighet att ställa in Understruket, Överstruket och färger. CommonDialog1.Showfont gör att Font-rutan visas. De inställningarna man gör där sparas sedan när man klickar på Ok i CommonDialog1.FontName , .FontSize o.s.v. Det man sedan gör är att man använder sig av rich textboxens ”Sel…” för att ändra värdena på den markerade texten. Som ni ser i koden så för att ändra exempelvis Font på den markerade texten skriver man rtbText.SelFontName = CommonDialog1.FontName.
Hur man ändrar färg fanns med i föregående exempel via teckensnitt ändring, här är bara ett sätt att ändra färg genom att öppna Common Dialogs Showcolor som öppnar en speciell ruta bara för färger.
Punklista är ofta användbart när man gör en textredigerare eller dylikt. Rich Textboxen har en inbyggd funktion för detta som heter SelBullet. Sätter man Selbullet = True så får helt enkelt den markerande texten en punkt framför varje radbrytning. Ovanstående kod gör att man kan både sätta på och stänga av Punktlistan.
För att vänsterjustera en text så använder man sig av SelAlignment och sätter den lika med rtfLeft, då kommer alla markerade rader att få vänsterjustering
Centrering görs på samma sätt som vänsterjustering fast SelAlignment sätter man då till rtfCenter.
Samma sak gäller för högerjustering, fast då SelAlignment = rtfRight
För att markera ALL text i ett dokument så kan man använda sig av ovanstående kod. Det koden gör är att först bestäms vars man ska börja markera och det är i början alltså tecken noll. Sista tecknet är lika med antal tecken i dokumentet alltså längden av rtbText.Text. Len är den funktion som man tar ut längden på en text med.
För att avmarkera all text sätter man helt enkelt SelLength = 0 vilket betyder att längden på det som ska vara markerat är 0 tecken, med andra ord ingenting.
”Span” är ett intressant kommando som finns på RTB kontrollern. Det span gör är att den markerar från markören och fram till ett visst tecken, i detta fall är valet mellanslags tecknet ” ” eftersom vi ska markera ett ord och ett ord slutar börjar alltid med ett mellanslag.
Att markera en mening fungerar på samma sätt som att markera ett ord fast en mening kan sluta på flera olika tecken. Här har jag valt ”.?!:” som tecken när meningen är slut. Vi får även lägga till att markeringen ska vara 1 tecken längre än vad Span gör för att få med sista tecknet i meningen.
Rich Textbox har även en funktion för att ta reda på vilken rad ett visst tecken är på. Funktionen heter GetLineFromChar och tar helt enkelt reda på vilken rad ett visst tecken är på.
Att sätta högermarginal kan vara användbart. Här har jag gjort så att jag använt mig av Markera Allt och sedan sätter jag SelRigthIndent = ett värde från en inputbox. Marginalen kommer att sättas på antal pixlar som man väljer. Om man vill ha något annat exempelvis Tum eller Cm så får man ändra Formens Scalemode till det.
Vänstermarginal är exakt likadant som Högermarginal bortsett från att man använder SelIndent istället för SelRightIndent
Baslinjebyte, det vill säga tecknets höjdled sätts via SelCharOffset och kan vara både positivt och negativt värde.
Det finns även funktion för att låsa text så att den inte går att ändra. SelProtected är det som sköter detta. Sätter man det till True så kommer den markerade texten att bli låst och inte gå att ändra.
Att låsa upp en text gör man genom att sätta SelProtected till False
Funtionen Find på RTB är en, inte så otippat, funktion för att söka i texten. Man skriver helt enkelt rtbText.Find, , .
Det Find gör exakt är att den söker upp första ordet mellan de värden man säger att den ska söka mellan, sen markerar den detta ordet. På punkt 24 finns en lite mer utvecklad kod där Find finns med.
Detta är koden för att skriva ut. Jag använder mig även här av Common dialog för att få upp rutan där man kan välja antal utskrifter och vilken skrivare man ska använda. Sedan använder jag RTB funktion SelPrint för att skriva ut. Det som står i koden .hDC är från Common Dialog och innehåller det val av skrivare man gjort.
Filstorleken på när man sparar dokumentet är samma sak som antalet tecken som ska sparas. För TXT är filstorleken antalet tecken som syns på skärmen men för RTF finns det en hel del data som bland annat sparar vad man har för färger och vad man använder för fonter m.m. För att ta reda på vad storleken blir för RTF får man använda sig av len(rtbText.TextRTF).
Denna kod gör att när du trycker Ctrl+N i textrutan så kommer den att hoppa till nästa ord. Trycker du igen hoppar den till ytterligare nästa ord. Här kan man även hoppa stycken eller meningar genom att ändra ”rtbText.UpTo " ", True, False” till tillexempel ”rtbText.UpTo ".?!:", True, False”. ".?!:" betyder att den kommer att stanna vid punkt, fråketecken, utropstecken och kolon.
Sist tänkte jag visa ett sätt att kombinera lite av de funktioner jag gått igenom i denna artikel. Det denna kod gör är att den söker efter ett ord som man skriver in och markerar alla de orden i texten med en valfri färg.
lStart = 0 är värdet på där den ska börja söka, i detta fall börjar vi i början av texten dvs tecken1.
sOrdet är det ordet som ska sökas efter, här använder ja en inputbox för att man ska kunna välja valfritt ord
cColor är den färg som ska användas och här använder jag mig av samma som vi gjorde i exempel 4.
Sedan måste vi ha en loop för att den ska gå igenom alla orden i texten. I loopen använder vi oss av Find som letar rätt på ordet. skillnaden här jämfört med exempel 19 är att vi kommer att ändra vars den ska börja söka. När Find hittar ett ord vill vi att när den kört loopen och kommer till Find igen så ska den nästa gång börja söka efter nästa ord och då sätter vi Find till att börja söka direkt efter föregående hittat ord. Detta gör raden lStart = rtbText.SelStart + rtbText.SelLength. Sedan måste vi också han en kodrad som kollar om vi hittat sista ordet och så ska vi hoppa ur Loopen Detta gör vi med att kolla om rtbText.SelStart + rtbText.SelLength = lStart ifall det är sant att dom är lika så har vi kommit till sissta ordet och hoppar då ut ur loopen med Exit Do
Slutligen vill jag påpeka igen att jag skrivit denna kod är så kortfattad som möjligt, ni kommer säkert hitta ställen där man kan få fram programfel. Anledningen är helt enkelt för att fokusera mer på Rich Textbox funktioner och inte felhanteringskod.
Det jag ville visa med denna kurs var Rich Textboxe funktionerna som finns. Jag tror jag fått med nästan alla funktioner som är speciella för just Rich Textbox. Detta är även min första kurs som jag skriver och det har varit väldigt roligt att skriva. Om det visar sig att denna kurs intresserar er läsare kan jag tänka mig att skriva fler kurser senare. Tänk också på att det jag skrivit ihop här är det mesta sådan jag kommit på själv genom lite tänkande och det går att kombinera ihop dessa funktioner på oändligt många sätt. Jag hoppas verkligen ni lärt er något nytt. Glöm inte att ge er röst. Skicka gärna ett imail till mig med synpunkter.
Du kan hämta hem ett testprojekt här
Var hittar jag Rich Textbox?
För att lägga in en RTB i din form så måste man först lägga till komponenten, det gör man enklast genom att trycka Ctrl + T eller Välja menyn Project och sen Components. Sedan bläddrar ni ner tills ni hittar ”Microsoft Rich Textbox Control …”, lägg till den genom att markera och sedan klicka på OK. En ny ikon kommer at dyka upp på komponent listan till vänster. Det är det bara att markera den och dra ut den på lämpligt ställe på formen.
Olika ”Properties” för Rich Textbox
Här kommer jag att ta upp några av de inställningar som kan göras i designläge i properties rutan. Jag tar bara upp sådant som är speciellt för just RTB komponenten. AutoVerbMenu – Med denna kan du aktivera eller inaktivera om du vill ha en standard popup-meny när du högerklickar på textruan, innehållande, Undo, Cut, Copy, Paste och Delete.
DisableNoScroll – Om man sätter denna till True så kommer scrollbar att visas hela tiden och inte bara när dom behöver användas.
FileName – Här kan du väja om du vill att programmet ska ha en specifik text fil startad i textrutan när programmet startas.
HideSelection – Denna avgör om du vill att markerad text ska vara markerad eller inte när du klickar på någon annan kontroll, denna bör man sätta till False om man ska göra exempelvis en textredigerare så att inte markeringen försvinner om man exempelvis vill ändra teckensnitt eller textstorlek.
MaxLength – Här kan du specificera hur många tecken som maximalt ska få skrivas i textrutan om värdet är 0 så är det ingen begränsning.
Multiline – Avgör om du ska kunna skriva fler än en rad text eller inte. Ska självklart var True om man gör en textredigerare.
Rightmargin – Sätter högermarginal.
Scrollbars – Här kan man välja om man vill ha scollbars. Finns fyra val, None, Horisontal, Vertical eller Both.
Dags för kodandet
Nu är det dags för att visa lite kodande, här kommer jag att visa totalt 23 funktioner som man kan göra med Rich Textbox. Observera däremot att jag har gjort koden så kort som möjligt, dvs jag har inte lagt in någon felhanteringskod. Skulle bli väldigt lång kod och betydligt svårare att förstå om jag skulle eliminera alla eventuella buggar.
1. Öppna
Private Sub cmdOpen_Click()
With CommonDialog1
.Filter = "Rich Text Files (.RTF)|*.rtf|Text Filer (*.TXT)|*.txt"
.ShowOpen
rtbText.LoadFile (CommonDialog1.FileName)
End With
End Sub
Det den här koden gör att den via CommonDialog1 öppnar en öppnings ruta, filtret säger vilka filer som ska vara möjliga att öppna, i detta fall RTF och TXT. Sedan finns det en funktion i RTB som heter LoadFile, med denna funktion kan man enkelt öppna TXT och RTF filer. Det man skriver in efter LoadFile är Filnamnet och vars filen ligger, i detta fall så får vi det från CommonDialog1.FileName. Man kan även skriva in vilket format man vill öppna i om man exempelvis skriver rtbText.LoadFile (CommonDialog1.FileName), rtfText så kommer den öppna alla RTF filer som TXT format och då visas även taggarna som bestämmer fäger m.m. i RTF-formatet.
2. Spara
Private Sub cmdSave_Click()
With CommonDialog1
.Filter = "Rich Text Files (.RTF)|*.rtf|Text Filer (*.TXT)|*.txt"
.ShowSave
Select Case .FilterIndex
Case 1 'Spara som RTF fil
rtbText.SaveFile .FileName, rtfRTF
Case 2 'Spara som TXT fil
rtbText.SaveFile .FileName, rtfText
End Select
End With
End Sub
Detta fungerar Väldigt lik Öppna. Det är samma sak här som med öppna att vi måste skriva in om vi vill spara det som TXT format annars sparas det som RTF. Skillnaden mellan denna kod och öppna koden är att jag här använder mig av FilterIndex på CommonDialog1 kontrollern vilket behövs för att bestämma om det ska sparas som RTF eller TXT. Det den gör exakt är att om man valt första valen (RTF) när man sparar så väljer den via Select Case att spara som RTF och om man valt andra valet (TXT) så kommer den att spara som TXT format.
3. Typsnitt
Private Sub cmdFont_Click()
CommonDialog1.Flags = cdlCFBoth + cdlCFEffects
CommonDialog1.ShowFont
rtbText.SelFontName = CommonDialog1.FontName
rtbText.SelFontSize = CommonDialog1.FontSize
rtbText.SelBold = CommonDialog1.FontBold
rtbText.SelItalic = CommonDialog1.FontItalic
rtbText.SelStrikeThru = CommonDialog1.FontStrikethru
rtbText.SelUnderline = CommonDialog1.FontUnderline
rtbText.SelColor = CommonDialog1.Color
End Sub
Även när det gäller typsnitt är CommonDialog det ultimata valet. Det finns en hel del flaggor(Flags) att välja på. Jag rekommenderar att ni tar en koll i CommonDialog kursen om ni vill veta mer om dom, det står även bra i MSDN hjälpen. I detta tillfälle har jag valt att den ska visa både skärmfonter och skrivarfonter plus möjlighet att ställa in Understruket, Överstruket och färger. CommonDialog1.Showfont gör att Font-rutan visas. De inställningarna man gör där sparas sedan när man klickar på Ok i CommonDialog1.FontName , .FontSize o.s.v. Det man sedan gör är att man använder sig av rich textboxens ”Sel…” för att ändra värdena på den markerade texten. Som ni ser i koden så för att ändra exempelvis Font på den markerade texten skriver man rtbText.SelFontName = CommonDialog1.FontName.
4. Färg
Private Sub cmdColor_Click()
CommonDialog1.ShowColor
rtbText.SelColor = CommonDialog1.Color
End Sub
Hur man ändrar färg fanns med i föregående exempel via teckensnitt ändring, här är bara ett sätt att ändra färg genom att öppna Common Dialogs Showcolor som öppnar en speciell ruta bara för färger.
5. Punktlista
Private Sub cmdBullet_Click() '
Select Case rtbText.SelBullet
Case False
rtbText.SelBullet = True
Case True
rtbText.SelBullet = False
Case Else
rtbText.SelBullet = False
End Select
End Sub
Punklista är ofta användbart när man gör en textredigerare eller dylikt. Rich Textboxen har en inbyggd funktion för detta som heter SelBullet. Sätter man Selbullet = True så får helt enkelt den markerande texten en punkt framför varje radbrytning. Ovanstående kod gör att man kan både sätta på och stänga av Punktlistan.
6. Vänsterjustering
Private Sub cmdLeftAdjustment_Click()
rtbText.SelAlignment = rtfLeft
End Sub
För att vänsterjustera en text så använder man sig av SelAlignment och sätter den lika med rtfLeft, då kommer alla markerade rader att få vänsterjustering
7. Centerering
Private Sub cmdCenterAdjustment_Click()
rtbText.SelAlignment = rtfCenter
End Sub
Centrering görs på samma sätt som vänsterjustering fast SelAlignment sätter man då till rtfCenter.
8. Högerjustering
Private Sub cmdRightAdjustment_Click()
rtbText.SelAlignment = rtfRight
End Sub
Samma sak gäller för högerjustering, fast då SelAlignment = rtfRight
9. Markera allt
Private Sub cmdSelect_Click()
rtbText.SelStart = 0
rtbText.SelLength = Len(rtbText.Text)
End Sub
För att markera ALL text i ett dokument så kan man använda sig av ovanstående kod. Det koden gör är att först bestäms vars man ska börja markera och det är i början alltså tecken noll. Sista tecknet är lika med antal tecken i dokumentet alltså längden av rtbText.Text. Len är den funktion som man tar ut längden på en text med.
10. Avmarkera
Private Sub cmdDeselect_Click()
rtbText.SelLength = 0
End Sub
För att avmarkera all text sätter man helt enkelt SelLength = 0 vilket betyder att längden på det som ska vara markerat är 0 tecken, med andra ord ingenting.
11. Markera ord
Private Sub cmdSelectWord_Click()
rtbText.Span " ", False, True
rtbText.Span " ", True, True
End Sub
”Span” är ett intressant kommando som finns på RTB kontrollern. Det span gör är att den markerar från markören och fram till ett visst tecken, i detta fall är valet mellanslags tecknet ” ” eftersom vi ska markera ett ord och ett ord slutar börjar alltid med ett mellanslag.
12. Markera en mening
Private Sub cmdSelectSentence_Click()
rtbText.Span ".?!:", False, True
rtbText.Span ".?!:", True, True
rtbText.SelLength = rtbText.SelLength + 1
End Sub
Att markera en mening fungerar på samma sätt som att markera ett ord fast en mening kan sluta på flera olika tecken. Här har jag valt ”.?!:” som tecken när meningen är slut. Vi får även lägga till att markeringen ska vara 1 tecken längre än vad Span gör för att få med sista tecknet i meningen.
13. Kolla rad
Private Sub cmdCheckLine_Click()
MsgBox "du är på rad " & rtbText.GetLineFromChar(rtbText.SelStart) _
& " av totalt " & rtbText.GetLineFromChar(Len(rtbText.Text))
End Sub
Rich Textbox har även en funktion för att ta reda på vilken rad ett visst tecken är på. Funktionen heter GetLineFromChar och tar helt enkelt reda på vilken rad ett visst tecken är på.
14. Högermarginal
Private Sub cmdRightMargn_Click()
With rtbText
.SelStart = 0
.SelLength = Len(rtbText.Text)
.SelRightIndent = InputBox("Höger Marginal", "Marginal", 300)
End With
End Sub
Att sätta högermarginal kan vara användbart. Här har jag gjort så att jag använt mig av Markera Allt och sedan sätter jag SelRigthIndent = ett värde från en inputbox. Marginalen kommer att sättas på antal pixlar som man väljer. Om man vill ha något annat exempelvis Tum eller Cm så får man ändra Formens Scalemode till det.
15. Vänstermarginal
Private Sub cmdLeftMargin_Click()
With rtbText
.SelStart = 0
.SelLength = Len(rtbText.Text)
.SelIndent = InputBox("Vänser Marginal", "Marginal", 300)
End With
End Sub
Vänstermarginal är exakt likadant som Högermarginal bortsett från att man använder SelIndent istället för SelRightIndent
16. Baslinjebyte
Private Sub cmdCharOffset_Click()
rtbText.SelCharOffset = InputBox("Baslinjebyte: (positiv eller negativ värde): ", "Baslinjebyte", "400")
End Sub
Baslinjebyte, det vill säga tecknets höjdled sätts via SelCharOffset och kan vara både positivt och negativt värde.
17. Låsa text
Private Sub cmdLock_Click()
rtbText.SelProtected = True
End Sub
Det finns även funktion för att låsa text så att den inte går att ändra. SelProtected är det som sköter detta. Sätter man det till True så kommer den markerade texten att bli låst och inte gå att ändra.
18. LÅsa upp text
Private Sub cmdUnlock_Click()
rtbText.SelProtected = False
End Sub
Att låsa upp en text gör man genom att sätta SelProtected till False
19. Söka i text
Private Sub cmdFind_Click()
rtbText.Find InputBox("Sök ordet: ", "SÖK"), 0, Len(rtbText.Text)
End Sub
Funtionen Find på RTB är en, inte så otippat, funktion för att söka i texten. Man skriver helt enkelt rtbText.Find
Det Find gör exakt är att den söker upp första ordet mellan de värden man säger att den ska söka mellan, sen markerar den detta ordet. På punkt 24 finns en lite mer utvecklad kod där Find finns med.
20. Skriva ut
Private Sub cmdPrint_Click()
With CommonDialog1
'Flagga för att CommonDialog ska returera vilken skrivare man valt
.Flags = cdlPDReturnDC
.ShowPrinter
rtbText.SelPrint .hDC
End With
End Sub
Detta är koden för att skriva ut. Jag använder mig även här av Common dialog för att få upp rutan där man kan välja antal utskrifter och vilken skrivare man ska använda. Sedan använder jag RTB funktion SelPrint för att skriva ut. Det som står i koden .hDC är från Common Dialog och innehåller det val av skrivare man gjort.
21 Filstorlek TXT, 22 Filstorlek RTF
Private Sub rtbText_Change()
Label1.Caption = "21. Filstorlek TXT-format: " & Len(rtbText.Text) & " Bytes"
Label2.Caption = "22. Filstorlek RTF-format: " & Len(rtbText.TextRTF) & " Bytes"
End Sub
Filstorleken på när man sparar dokumentet är samma sak som antalet tecken som ska sparas. För TXT är filstorleken antalet tecken som syns på skärmen men för RTF finns det en hel del data som bland annat sparar vad man har för färger och vad man använder för fonter m.m. För att ta reda på vad storleken blir för RTF får man använda sig av len(rtbText.TextRTF).
23. Hoppa till nästa ord.
Private Sub rtbText_KeyUp(KeyCode As Integer, Shift As Integer)
If Shift = vbCtrlMask Then
'Ctrl+N flyttar markören till nästa ord
If KeyCode = vbKeyN Then
rtbText.UpTo " ", True, False
rtbText.SelStart = rtbText.SelStart + 1
End If
End If
End Sub
Denna kod gör att när du trycker Ctrl+N i textrutan så kommer den att hoppa till nästa ord. Trycker du igen hoppar den till ytterligare nästa ord. Här kan man även hoppa stycken eller meningar genom att ändra ”rtbText.UpTo " ", True, False” till tillexempel ”rtbText.UpTo ".?!:", True, False”. ".?!:" betyder att den kommer att stanna vid punkt, fråketecken, utropstecken och kolon.
24. Färgändring av text. Kombination av funktioner.
Private Sub cmdColorChanger_Click()
Dim lStart As Long, sOrdet As String, cColor As ColorConstants
lStart = 0
sOrdet = InputBox("Sök ordet: ", "SÖK")
CommonDialog1.ShowColor
cColor = CommonDialog1.Color
Do
rtbText.Find sOrdet, lStart, Len(rtbText.Text)
rtbText.SelColor = cColor
If rtbText.SelStart + rtbText.SelLength = lStart Then Exit Do
lStart = rtbText.SelStart + rtbText.SelLength
Loop
rtbText.SelStart = 0
End Sub
Sist tänkte jag visa ett sätt att kombinera lite av de funktioner jag gått igenom i denna artikel. Det denna kod gör är att den söker efter ett ord som man skriver in och markerar alla de orden i texten med en valfri färg.
lStart = 0 är värdet på där den ska börja söka, i detta fall börjar vi i början av texten dvs tecken1.
sOrdet är det ordet som ska sökas efter, här använder ja en inputbox för att man ska kunna välja valfritt ord
cColor är den färg som ska användas och här använder jag mig av samma som vi gjorde i exempel 4.
Sedan måste vi ha en loop för att den ska gå igenom alla orden i texten. I loopen använder vi oss av Find som letar rätt på ordet. skillnaden här jämfört med exempel 19 är att vi kommer att ändra vars den ska börja söka. När Find hittar ett ord vill vi att när den kört loopen och kommer till Find igen så ska den nästa gång börja söka efter nästa ord och då sätter vi Find till att börja söka direkt efter föregående hittat ord. Detta gör raden lStart = rtbText.SelStart + rtbText.SelLength. Sedan måste vi också han en kodrad som kollar om vi hittat sista ordet och så ska vi hoppa ur Loopen Detta gör vi med att kolla om rtbText.SelStart + rtbText.SelLength = lStart ifall det är sant att dom är lika så har vi kommit till sissta ordet och hoppar då ut ur loopen med Exit Do
Slutord
Slutligen vill jag påpeka igen att jag skrivit denna kod är så kortfattad som möjligt, ni kommer säkert hitta ställen där man kan få fram programfel. Anledningen är helt enkelt för att fokusera mer på Rich Textbox funktioner och inte felhanteringskod.
Det jag ville visa med denna kurs var Rich Textboxe funktionerna som finns. Jag tror jag fått med nästan alla funktioner som är speciella för just Rich Textbox. Detta är även min första kurs som jag skriver och det har varit väldigt roligt att skriva. Om det visar sig att denna kurs intresserar er läsare kan jag tänka mig att skriva fler kurser senare. Tänk också på att det jag skrivit ihop här är det mesta sådan jag kommit på själv genom lite tänkande och det går att kombinera ihop dessa funktioner på oändligt många sätt. Jag hoppas verkligen ni lärt er något nytt. Glöm inte att ge er röst. Skicka gärna ett imail till mig med synpunkter.
Du kan hämta hem ett testprojekt här
0 Kommentarer