känner att jag ställer rätt många frågor idag, men annars lär man sig ju inget eller hur =) nja.. vad finns det annars? (är helt ny på alla verktyg mm. om vad som finns) Högerklicka på toolbaren med alla kontroller i. Väl Components från popup menyn. Sök efter "Microsoft RitchText Edit control" eller liknande. Hej, Tack Thomas! Hej, TACK!!!!!Byta färg för text
Hur gör man så att en viss text i en TextBox ändrar färg om den står inom vissa tecken?
Ex:
om en text står inom
< och > så ska den texten ändras till blå färg
men övrig text ska ha kvar en vanliga färgen (svart)
hoppas att nån vet!
//StefanSv: Byta färg för text
Sv: Byta färg för text
Kryssa för den. Så kan du nu lägga till den i ditt formulär från toolbaren med kontroller.
Du markerar den text du vil förändra med .selStart och -delLength egenskapen och sätter .selColor = önskad färg.Sv: Byta färg för text
<br><br>
Det verkar som att det var lite missförstånd i dialogen ovan. Jag tror att du vet att du skall använda en RichTextBox, men att du inte vet hur man färgar texten.
<br><br>
Jag har för mig att det finns ett exempel här på PelleSoft med en editor som färgar olika taggar med olika färg. Mitt ex visar hur du går igenom en text från start till slut, så länge som det finns några "taggar" kvar. Koden ligger i ett kontrollerat click_event, så du får förmodligen anpassa den lite om den skall ligga i t ex ett change_event.
<code>
Private Sub Command1_Click()
Dim lngPosStart As Long
Dim lngPosEnd As Long
' Kolla var ett ev första "<" finns
lngPosStart = InStr(1, RichTextBox1.Text, "<")
Do While lngPosStart > 0
' Färga "mellantext" svart.
RichTextBox1.SelStart = lngPosEnd
RichTextBox1.SelLength = lngPosStart - lngPosEnd
RichTextBox1.SelColor = RGB(0, 0, 0)
' Om det fanns ett "<" så letar vi efter ett ">"
lngPosEnd = InStr(lngPosStart, RichTextBox1.Text, ">")
' Om det fanns ett ">" så färgar vi texten blå
If lngPosEnd > 0 Then
' -1 för att få med "<" när vi färgar
RichTextBox1.SelStart = lngPosStart - 1
RichTextBox1.SelLength = lngPosEnd - RichTextBox1.SelStart
RichTextBox1.SelColor = RGB(0, 0, 255)
' Sätt start position för nästa sökning
lngPosStart = InStr(lngPosEnd + 1, RichTextBox1.Text, "<")
Else
' Undviker att vi hamnar i en evighetsloop i de fall
' som vi saknar en matchande ">" på slutet
lngPosStart = 0
End If
Loop
End Sub
</code>
mvh /thomasSv: Byta färg för text
Det funkar skit bra när man skriver kod mm och när man klickar på knappen så ändras färgerna, perfelt!
Men vill man skriva mer text efterdet blir den också blå, även fast den inte är inom < > =(
Vet du hur jag ska ordna det? Vet du även hur jag ska göra så att det sker automatiskt när man skriver koden, trycker på tanjenterna alltså?Sv: Byta färg för text
<br><br>
Jag lade lite snabbt till lite rader för att uppnå det som du ville. Men denna lösning blir INTE snygg. Det fladdrar som f..n, och den kommer säkert inte att funka bra med större filer, men jag tänkte att jag lämnar lite åt dig att putsa på :)
<code>
Private Sub RichTextBox1_Change()
Dim lngPosStart As Long
Dim lngPosEnd As Long
Dim lngPosCurrent As Long
' Läs ut var markören befinner sig just nu
lngPosCurrent = RichTextBox1.SelStart
' Kolla var ett ev första "<" finns
lngPosStart = InStr(1, RichTextBox1.Text, "<")
Do While lngPosStart > 0
' Färga "mellantext" svart.
RichTextBox1.SelStart = lngPosEnd
RichTextBox1.SelLength = lngPosStart - lngPosEnd
RichTextBox1.SelColor = RGB(0, 0, 0)
' Om det fanns ett "<" så letar vi efter ett ">"
lngPosEnd = InStr(lngPosStart, RichTextBox1.Text, ">")
' Om det fanns ett ">" så färgar vi texten blå
If lngPosEnd > 0 Then
' -1 för att få med "<" när vi färgar
RichTextBox1.SelStart = lngPosStart - 1
RichTextBox1.SelLength = lngPosEnd - RichTextBox1.SelStart
RichTextBox1.SelColor = RGB(0, 0, 255)
' Sätt start position för nästa sökning
lngPosStart = InStr(lngPosEnd + 1, RichTextBox1.Text, "<")
Else
' Undviker att vi hamnar i en evighetsloop i de fall
' som vi saknar en matchande ">" på slutet
lngPosStart = 0
End If
Loop
' Färga "resten" svart
RichTextBox1.SelStart = InStrRev(RichTextBox1.Text, ">")
RichTextBox1.SelLength = Len(RichTextBox1.Text) - RichTextBox1.SelStart
RichTextBox1.SelColor = RGB(0, 0, 0)
' Sätt tillbaka position där vi var
RichTextBox1.SelStart = lngPosCurrent
End Sub
</code>
mvh /ThomasSv: Byta färg för text
Perfekt! Lite fladdrigt kanske men det får jag säkert bort =)
Tack för all hjälp!!