[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 744
  • Last Modified:

Different character color in Rich Text Box

Hi everybody,

I am new here ...I have some problems to give color to exact words in RTB...I searched the forum I get some answer about this issue but I couldnt find and understand these...My problem is :

I have some files that their extensions are  *.eia   that can be opened with Notepad.
 I can load these files from thier location into RTB in my project.
This files like this:

N1 ..............
N2 G1 X......  Y........ Z......
N3       X...... Y........ Z......
N4 G1 X.....Y......Z.....
N5 G2 X......Y.....Z..... f3000
G0
N6......
.
after loading I can see these lines in my RTB..

This is the problem:

I want to see just "G1" s   as Green   and also
I want to see just "G2" s   as Yellow   in my RTB when I click a command buton. How can I do these??
..I know some topics about this issue in this forum but I couldnt adapt them to my project..Because I couldnt understand the logic about these...Sellenght SelColor??..I couldnt do...
0
hakanogu
Asked:
hakanogu
  • 3
  • 2
1 Solution
 
twardCommented:
Try this in the Click event of the button:

  Dim Counter As Long
  Dim StringPos As Long
 
  For Counter = 1 To Len(Me.RichTextBox1.Text)
     
     StringPos = InStr(Counter, Me.RichTextBox1.Text, " G1 ", vbTextCompare)
     
     If StringPos > 0 Then
       
       Me.RichTextBox1.SelStart = StringPos
       Me.RichTextBox1.SelLength = 2
       Me.RichTextBox1.SelColor = vbGreen
       
       Counter = StringPos + 4
       
     Else
       
       Exit For
       
     End If
     
  Next Counter
 
  For Counter = 1 To Len(Me.RichTextBox1.Text)
     
     StringPos = InStr(Counter, Me.RichTextBox1.Text, " G2 ", vbTextCompare)
     
     If StringPos > 0 Then
       
       Me.RichTextBox1.SelStart = StringPos
       Me.RichTextBox1.SelLength = 2
       Me.RichTextBox1.SelColor = vbYellow
       
       Counter = StringPos + 4
       
     Else
       
       Exit For
       
     End If
     
  Next Counter
0
 
hakanoguAuthor Commented:
thank you it seems work really.. But it doesnt work in my project..0n my project it gives error line "Me.RichTextBox1.SelColor = vbGreen"     it couldnt find " SelColor" properties.  

I tried the code above in other an empty project then I checked the "RichtextBox1. Selcolor"  yes I can see its properties. But in my project I am adding a new RTB, 1 couldnt see SelColor. 1 can see everyting "SelLenght, SelStart,SelSelect vb.." but no SelColor..What sholud I do?
0
 
hakanoguAuthor Commented:
I solved the problem thank you...
0
 
hakanoguAuthor Commented:
Hi again,
The codes works fine but I have a little bit problem...If our text have 400-500 line there is no problem, It just takes to change the color approx. 5-6 seconds..But If Our text have 80000-85000 lines, 1t takes approx. 1-1.5 minutes..Is there any other way to make faster to decrase this time..??

And the other question: I am writing "S3000" instead of "G2" in order to search that word, but the same codes doesnt work proper..What should I change to run the code in order to change the "S3000"s color.. I think 0t is relevant with  "Me.RichTextBox1.SelLength = 2" I changed its value" 5",  but I couldnt solve again..Could you help me?
0
 
twardCommented:
Try this and see if it is faster:

Private Const StringsToFind = " G1 , G2 , S3000 "
Private Const ColorsToUse = "65280,65535,255"  ' vbGreen, vbYellow, vbRed '
  Dim Counter As Long
  Dim LastStart As Long
  Dim Strings() As String
  Dim TheColors() As String
 
  Strings = Split(StringsToFind, ",", -1, vbTextCompare)
  TheColors = Split(ColorsToUse, ",", -1)
   
  For Counter = 0 To UBound(Strings)
   
    LastStart = 0
 
    Do While LastStart <> -1 And LastStart < Len(Me.RichTextBox1.Text)
   
      LastStart = Me.RichTextBox1.Find(Strings(Counter), LastStart)
   
      If LastStart <> -1 Then
       
        Me.RichTextBox1.SelColor = Val(TheColors(Counter))
        LastStart = LastStart + Len(Strings(Counter))
       
      End If
   
    Loop
   
  Next Counter
 
End Sub
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now