Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: RichTextBox Добавлено: 24.07.03 17:41  

Автор вопроса:  Trusishka | ICQ: 229751913 

Задача - окрасить некоторые слова разным цветом. Для этого я find- нахожу слова и selcolor - окрашиваю. Но возникает проблема - после смены текста , весь текст окрашивается в цвет последнего окрашенного слова!!!

И еще вопросик - после окрашивания мой текст немного скроллится вниз, как сделать так чтобы он снова был виден с первой строчки?

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Padre



ICQ: 346632205 

Вопросов: 25
Ответов: 215
 Web-сайт: localhost
 Профиль | | #1
Добавлено: 24.07.03 19:31
покажи код - тогда гораздо проще будет разобраться

Ответить

Номер ответа: 2
Автор ответа:
 shuffle



Администратор

ICQ: 201502381 

Вопросов: 15
Ответов: 737
 Профиль | | #2 Добавлено: 24.07.03 20:54
1. Перед сменой текста, выделяй весь текст и окрашивай в чёрный (или тот который тебе нужен)
2. Запоминай перед окрашиванием позицию каретки, а потом устанавливай обратно. А если нужно просто показать текст с первой строки, то установи каретку в самое начало...

Ответить

Номер ответа: 3
Автор ответа:
 Trusishka



ICQ: 229751913 

Вопросов: 36
Ответов: 48
 Профиль | | #3 Добавлено: 25.07.03 10:13

Тогда новые вопросы

 1) как выделить весь текст

2) как поставить положение кареткив начало текста

Ответить

Номер ответа: 4
Автор ответа:
 shuffle



Администратор

ICQ: 201502381 

Вопросов: 15
Ответов: 737
 Профиль | | #4 Добавлено: 25.07.03 14:35

1. Выделить весь текст:

   With RichTextBox1
      .SelStart = 0
      .SelLength = Len(.Text)
   End With

2. Установить каретку в начало текста:

   With RichTextBox1
      .SelStart = 0 'Соответственно устанавливай любое _
                     положение каретки...
   End With

Ответить

Номер ответа: 5
Автор ответа:
 Malyav



ICQ: 8440085 

Вопросов: 15
Ответов: 117
 Web-сайт: malyav.narod.ru
 Профиль | | #5
Добавлено: 25.07.03 20:04

Привет, мне как то надо было в РТБ выделить строки типа

VCOMM_ReadComm  SIEMENS M35i (Analog V.32)  SUCCESS  Length: 6: 0D 0A 4F 4B 0D 0A (OK)
VCOMM_WriteComm  SIEMENS M35i (Analog V.32)  SUCCESS  Length: 8: 41 54 51 56 31 45 30 0D (ATQV1E0)
VCOMM_ReadComm  SIEMENS M35i (Analog V.32)  SUCCESS  Length: 6: 0D 0A 4F 4B 0D 0A (OK)
VCOMM_WriteComm  SIEMENS M35i (Analog V.32)  SUCCESS  Length: 4: 41 54 41 0D (ATA)
VCOMM_ReadComm  SIEMENS M35i (Analog V.32)  SUCCESS  Length: 11: 0D 0A 43 4F 4E 4E 45 43 54 0D 0A (CONNECT)
VCOMM_WriteComm  SIEMENS M35i (Analog V.32)  SUCCESS  Length: 9: FF 13 80 00 4F F8 00 10 03 (яЂ

разным цветом в зависимости от содержимого, а также выжернить текст в скобках и вот что получилось


    Dim i As Integer
    Dim j As Integer
    i = 1
    j = InStr(i + 1, RTB.Text, vbCrLf)
    Do
        RTB.SelStart = i
        RTB.SelLength = j - i
        If InStr(1, RTB.SelText, "Write") <> 0 Then
            RTB.SelColor = vbRed
            i = InStrRev(RTB.Text, "(", j) - 1
            RTB.SelStart = i
            RTB.SelLength = j - i
            RTB.SelColor = vbBlack
            RTB.SelBold = True
        ElseIf InStr(1, RTB.SelText, "Read") <> 0 Then
            RTB.SelColor = vbBlue
            i = InStrRev(RTB.Text, "(", j) - 1
            RTB.SelStart = i
            RTB.SelLength = j - i
            RTB.SelColor = vbBlack
            RTB.SelBold = True
        Else
            RTB.SelColor = 1598480
            i = InStrRev(RTB.Text, "(", j) - 1
            RTB.SelStart = i
            RTB.SelLength = j - i
            RTB.SelColor = vbBlack
            RTB.SelBold = True
        End If
        i = j
        j = InStr(i + 1, RTB.Text, vbCrLf)
    Loop While j <> 0

Ответить

Номер ответа: 6
Автор ответа:
 Trusishka



ICQ: 229751913 

Вопросов: 36
Ответов: 48
 Профиль | | #6 Добавлено: 28.07.03 10:05

Спасибо за помощь - все работает.

Ответить

Номер ответа: 7
Автор ответа:
 Alekz



ICQ: 273858307 

Вопросов: 0
Ответов: 2
 Профиль | | #7 Добавлено: 27.06.05 07:00
 а как быть если RichTextBox содержит несколько сотен строк и все их надо раскрасить в разные цвета?
 у меня проблема. есть контрол RichTextBox в который нужно добавлять строки разного цвета, поочерёдно. Например, как в чате. Вроде бы вышеописанный метод работает, но если текста довольно много возникает проблема.
 Хотя главная проблема не в том как разукрасить строчки, а как добавить новую строку другого цвета, так чтобы не изменились старые?? Помогите плиз...

Ответить

Номер ответа: 8
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #8 Добавлено: 27.06.05 10:23
Все так же

With RichTextBox1
.SelStart = Len(.Text)
.SelColor = vbRed
.SelText = "New Text"
End With

Ответить

Номер ответа: 9
Автор ответа:
 Alekz



ICQ: 273858307 

Вопросов: 0
Ответов: 2
 Профиль | | #9 Добавлено: 27.06.05 22:50
2LamerOnLine

Спасибо, работает. Всё куда проще чем я думал.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам