Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Раскраска скрипта в RichEdit

282
05 августа 2006 года
Bard
481 / / 26.02.2006
HI!

Мне надо зделать розкраску скрипта в RichEdit. Надо чтобы когда вводиш, например, Print, то текст печатался синим цветом, а когда вводиш коментарий ( 'comment ) , то печаталось зеленым.
Но мне нужно чтобы не только печатать можна было, но чтобы можна было поместить туда программно текст и разукрасить его.
280
06 августа 2006 года
ВуД™
326 / / 04.01.2006
Для этого надо ипользовать функцию InStr:)
Я как то делал виде такого, если код найду то скину тебе:)
280
06 августа 2006 года
ВуД™
326 / / 04.01.2006
Вот код:
Код:
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
282
06 августа 2006 года
Bard
481 / / 26.02.2006
О! Вот ето я понимаю, скрипт!
Только Rich меня задолбал: при каждом нажатии клавиши Enter он переключаеться на русскую разакладку, блин!
403
06 августа 2006 года
ace lighting
411 / / 05.05.2006
[QUOTE=ВуД™]Вот код:
 
Код:
Do
        lCurPos = InStr(lCurPos + 1, RichTextBox1.Text, "print", vbTextCompare)
        If lCurPos = 0 Then Exit Do
        ColorIt lCurPos, 3
    Loop
[/QUOTE]
только наверное не ColorIt ICurPos, 3 а ColorIt ICurPos, 5. А то как - то некрасиво выходит - только pri выделяется :)
282
06 августа 2006 года
Bard
481 / / 26.02.2006
Нее, ето лечше: Len("print") :)
403
06 августа 2006 года
ace lighting
411 / / 05.05.2006
[QUOTE=Bard]Нее, ето лечше: Len("print") :)[/QUOTE]
согласен! а ещё лучше установить EmEditor и наслаждаться подсветкой синтаксиса у него :D
280
06 августа 2006 года
ВуД™
326 / / 04.01.2006
[QUOTE=ace lighting]только наверное не ColorIt ICurPos, 3 а ColorIt ICurPos, 5. А то как - то некрасиво выходит - только pri выделяется :)[/QUOTE]

Извени проглядел:mad: , а а так все нормально :)
282
06 августа 2006 года
Bard
481 / / 26.02.2006
[QUOTE=ВуД™]...а так все нормально...[/QUOTE]

Почти... РихТекстбокс крутит скроллером сверху вниз, когда что либо вводиш. Ето становиться очень заметным, когда редактируеш длинный текст. Причина мне понятна, а вот решение - нет.
280
15 августа 2006 года
ВуД™
326 / / 04.01.2006
[QUOTE=Bard]Почти... РихТекстбокс крутит скроллером сверху вниз, когда что либо вводиш. Ето становиться очень заметным, когда редактируеш длинный текст. Причина мне понятна, а вот решение - нет.[/QUOTE]
Решения есть только так если сделать:
Код:
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

Но сдесь другой касяк, а как его исправитья не знаю.
Если догодаешся скажи.
282
15 августа 2006 года
Bard
481 / / 26.02.2006
Ето ничяго не дает :( Проблема как была, так и осталась :(
280
15 августа 2006 года
ВуД™
326 / / 04.01.2006
Может Api нам какие-нибудь помогут?:) :)
280
19 августа 2006 года
ВуД™
326 / / 04.01.2006
[QUOTE=Bard]Ето ничяго не дает :( Проблема как была, так и осталась :([/QUOTE]
Всё проблема решина:
Код:
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
282
22 августа 2006 года
Bard
481 / / 26.02.2006
Приведи, пожалуйста код, твоей функцыи [font="Courier New"]ColorIt[/font].
280
22 августа 2006 года
ВуД™
326 / / 04.01.2006
Цитата:
Приведи, пожалуйста код, твоей функцыи ColorIt.



Он же есть здесь.:cool:

282
22 августа 2006 года
Bard
481 / / 26.02.2006
[quote=ВуД™]Всё проблема решина[/quote]
теперь есть другой глюк :( когда набрать принт то все хорошо, но если набрать принт, а потом удалить какую-то букву, например крайнюю, то прин тоже будет выделенным :(:(:(
282
22 августа 2006 года
Bard
481 / / 26.02.2006
[quote=ВуД™]Он же есть здесь.:cool:[/quote]

Да? Тогда почему у твоего вызова только два параметра, а не три?
280
22 августа 2006 года
ВуД™
326 / / 04.01.2006
[QUOTE=Bard]Да? Тогда почему у твоего вызова только два параметра, а не три?[/QUOTE]
Где? :confused: Вроде все нормально.
282
23 августа 2006 года
Bard
481 / / 26.02.2006
[QUOTE=ВуД™]Где? :confused: Вроде все нормально.[/QUOTE]

Ну да ладно ето не многое меняет....

Чюю я что рихедит не для етих целей предназначен...
Читай пост №16
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог