Если находим нужное слово выделяем его. Часть #2

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
zaf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 27.03.2006 (Пн) 23:04

Если находим нужное слово выделяем его. Часть #2

Сообщение zaf » 16.04.2006 (Вс) 13:28

Вот есть код от vvs_adm
Код: Выделить всё
Private Sub Command1_Click()
Dim i As Long
Do

    With RichTextBox1
        i = .Find("zaf", i + 1) ' тут была ошибка
        If i > 0 Then
            .SelStart = i
            .SelLength = Len("zaf")
            .SelColor = vbRed
            .SelLength = 0
        End If
    End With
Loop While i > 0


End Sub


Он в RichTextBox1 ищет слова zaf и выделяет их :)
Но RichTextBox1 каждую секунду таймером обновляется ну соответственно вместе с этим кодом

Когда текста много строк и во всех почти строках есть слово zaf то рич текст бокс очень сильно моргает, т.е. весь текст прокручивается...

Попробовал убрать .SelStart = i не помогает:(

Забыл сказать что в этом таймере еще и каждый раз выполняется RichTextBox1.SelStart = Len(RichTextBox1.Text) т.е. прокрутка в самый низ

Короче как сделать чтобы он слова выделял и при этом не прогручивал весь текст (глаза болят)?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 16.04.2006 (Вс) 14:03

Варианты.
Код: Выделить всё
            .visible=false
            .SelStart = i
            .SelLength = Len("zaf")
            .SelColor = vbRed
            .SelLength = 0
            .visible=true


Код: Выделить всё
            .enabled=false
            .SelStart = i
            .SelLength = Len("zaf")
            .SelColor = vbRed
            .SelLength = 0
            .enabled=true

zaf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 27.03.2006 (Пн) 23:04

Сообщение zaf » 16.04.2006 (Вс) 14:38

Списибо :) за идею!

Вот так не мерцает

Private Sub Timer2_Timer()
RichTextBox1.Visible = False
Dim i As Long
Do

With RichTextBox1
i = .Find("zaf", i + 1) ' тут была ошибка
If i > 0 Then
.SelStart = i
.SelLength = Len("zaf")
.SelColor = vbRed
.SelLength = 0
End If
End With
Loop While i > 0

RichTextBox1.Visible = True
RichTextBox1.SelStart = Len(RichTextBox1.Text)
End Sub

zaf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 27.03.2006 (Пн) 23:04

Сообщение zaf » 16.04.2006 (Вс) 14:44

А как можно сделать чтобы одновременно и цвет самого текста поменять и выделять цвет ников?

zaf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 27.03.2006 (Пн) 23:04

Сообщение zaf » 16.04.2006 (Вс) 14:47

Все разобрался

Код: Выделить всё

Private Sub Timer2_Timer()


Dim zChatext As String




Open Form1.urlChat For Input As #fileFree
RichTextBox1.Text = Input$(LOF(fileFree), #fileFree)

Close #fileFree
RichTextBox1.Visible = False
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text)
RichTextBox1.SelColor = cOlortext
Dim i As Long
Do
    With RichTextBox1
        i = .Find(Form1.uNik, i + 1)
        If i > 0 Then
           
            .SelStart = i
            .SelLength = Len(Form1.uNik)
            .SelColor = cOlormsg
            .SelLength = 0
            End If
    End With

Loop While i > 0




RichTextBox1.SelStart = Len(RichTextBox1.Text)

RichTextBox1.Visible = True
End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 179

    TopList  
cron