Sub ColorIt(ByVal lBegPos As Long, ByVal lLength As Long)
RichTextBox1.SelStart = lBegPos - 1
RichTextBox1.SelLength = lLength
RichTextBox1.SelColor = vbRed
End Sub
Private Sub RichTextBox1_Change()
Dim sst As Long, slln As Long
Dim lCurPos As Long
RichTextBox1.Enabled = False
sst = RichTextBox1.SelStart
slln = RichTextBox1.SelLength
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text) + 1
RichTextBox1.SelColor = vbBlack
lCurPos = 0
Do
lCurPos = InStr(lCurPos + 1, RichTextBox1.Text, "print", vbTextCompare)
If lCurPos = 0 Then Exit Do
ColorIt lCurPos, 3
Loop
RichTextBox1.SelStart = sst
RichTextBox1.SelLength = slln
RichTextBox1.SelColor = vbBlack
RichTextBox1.Enabled = True
RichTextBox1.SetFocus
End Sub
Раскраска скрипта в RichEdit
Мне надо зделать розкраску скрипта в RichEdit. Надо чтобы когда вводиш, например, Print, то текст печатался синим цветом, а когда вводиш коментарий ( 'comment ) , то печаталось зеленым.
Но мне нужно чтобы не только печатать можна было, но чтобы можна было поместить туда программно текст и разукрасить его.
Я как то делал виде такого, если код найду то скину тебе:)
Вот код:
Только Rich меня задолбал: при каждом нажатии клавиши Enter он переключаеться на русскую разакладку, блин!
Код:
Do
lCurPos = InStr(lCurPos + 1, RichTextBox1.Text, "print", vbTextCompare)
If lCurPos = 0 Then Exit Do
ColorIt lCurPos, 3
Loop
lCurPos = InStr(lCurPos + 1, RichTextBox1.Text, "print", vbTextCompare)
If lCurPos = 0 Then Exit Do
ColorIt lCurPos, 3
Loop
только наверное не ColorIt ICurPos, 3 а ColorIt ICurPos, 5. А то как - то некрасиво выходит - только pri выделяется :)
Нее, ето лечше: Len("print") :)
согласен! а ещё лучше установить EmEditor и наслаждаться подсветкой синтаксиса у него :D
Извени проглядел:mad: , а а так все нормально :)
Почти... РихТекстбокс крутит скроллером сверху вниз, когда что либо вводиш. Ето становиться очень заметным, когда редактируеш длинный текст. Причина мне понятна, а вот решение - нет.
Решения есть только так если сделать:
Код:
sst = RichTextBox1.SelStart
lCurPos = 0
Do
lCurPos = InStr(lCurPos + 1, RichTextBox1.Text, "print", vbTextCompare)
If lCurPos = 0 Then Exit Do
ColorIt lCurPos, 3
Loop
RichTextBox1.SelStart = sst
RichTextBox1.SelColor = vbBlack
lCurPos = 0
Do
lCurPos = InStr(lCurPos + 1, RichTextBox1.Text, "print", vbTextCompare)
If lCurPos = 0 Then Exit Do
ColorIt lCurPos, 3
Loop
RichTextBox1.SelStart = sst
RichTextBox1.SelColor = vbBlack
Но сдесь другой касяк, а как его исправитья не знаю.
Если догодаешся скажи.
Ето ничяго не дает :( Проблема как была, так и осталась :(
Может Api нам какие-нибудь помогут?:) :)
Всё проблема решина:
Код:
Private Sub RichTextBox1_Change()
Dim sst As Long, slln As Long
Dim lCurPos As Long
sst = RichTextBox1.SelStart
slln = RichTextBox1.SelLength
lCurPos = InstrRev(RichTextBox1.Text, " ", sst)
If CurPos = 0 Then CurPos = sst
Do
lCurPos = InStr(lCurPos + 1, RichTextBox1.Text, "print", vbTextCompare)
If lCurPos = 0 Then Exit Do
ColorIt lCurPos, 5
Loop
RichTextBox1.SelStart = sst
RichTextBox1.SelLength = slln
End Sub
Dim sst As Long, slln As Long
Dim lCurPos As Long
sst = RichTextBox1.SelStart
slln = RichTextBox1.SelLength
lCurPos = InstrRev(RichTextBox1.Text, " ", sst)
If CurPos = 0 Then CurPos = sst
Do
lCurPos = InStr(lCurPos + 1, RichTextBox1.Text, "print", vbTextCompare)
If lCurPos = 0 Then Exit Do
ColorIt lCurPos, 5
Loop
RichTextBox1.SelStart = sst
RichTextBox1.SelLength = slln
End Sub
Приведи, пожалуйста код, твоей функцыи [font="Courier New"]ColorIt[/font].
Цитата:
Приведи, пожалуйста код, твоей функцыи ColorIt.
Он же есть здесь.:cool:
теперь есть другой глюк :( когда набрать принт то все хорошо, но если набрать принт, а потом удалить какую-то букву, например крайнюю, то прин тоже будет выделенным :(:(:(
Да? Тогда почему у твоего вызова только два параметра, а не три?
Где? :confused: Вроде все нормально.
Ну да ладно ето не многое меняет....
Чюю я что рихедит не для етих целей предназначен...
Читай пост №16