Solved

Different character color in Rich Text Box

Posted on 2007-12-05
5
720 Views
Last Modified: 2012-08-14
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
Comment
Question by:hakanogu
  • 3
  • 2
5 Comments
 
LVL 7

Accepted Solution

by:
tward earned 50 total points
Comment Utility
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
 

Author Comment

by:hakanogu
Comment Utility
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
 

Author Comment

by:hakanogu
Comment Utility
I solved the problem thank you...
0
 

Author Comment

by:hakanogu
Comment Utility
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
 
LVL 7

Expert Comment

by:tward
Comment Utility
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

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now