Если находим нужное слово выделяем его

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

Если находим нужное слово выделяем его

Сообщение zaf » 08.04.2006 (Сб) 19:20

Еще один вопросик..

Вот у нас есть файл vb.txt
В этом файле есть Много текста...

Как сделать чтобы он нашел там слова ZAF и выделял его красным цветом?
Последний раз редактировалось zaf 08.04.2006 (Сб) 20:23, всего редактировалось 1 раз.

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

Сообщение Amed » 08.04.2006 (Сб) 19:42

Загружаем файл в Rich Textbox Control.

Ищем строку в тексте (rtbText.Find "ZAF") до тех пор, пока не будет возвращать ноль.
Как только нашли очередное вхождение, выделяем (SelStart, SelLength) нужный кусок текста и красим его в красный цвет (.SelColor = vbRed).

Что непонятно? :)

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

Сообщение zaf » 08.04.2006 (Сб) 20:22

Amed писал(а):Загружаем файл в Rich Textbox Control.

Ищем строку в тексте (rtbText.Find "ZAF") до тех пор, пока не будет возвращать ноль.
Как только нашли очередное вхождение, выделяем (SelStart, SelLength) нужный кусок текста и красим его в красный цвет (.SelColor = vbRed).

Что непонятно? :)

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

Я пока не владею такими навыками чтобы то что ты обяснил мне обяснить монитору ;)

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

Сообщение Amed » 08.04.2006 (Сб) 20:26

"Спасибо" рано говоришь :)
Для начала подключи в Project|Components Rich TextBox Control и поиграйся с ним. В справку по этому контролу загляни обязательно. Как наиграешься, расскажи еще раз, что именно непонятно в том, что я написал.

З.Ы. угнетает отсутствие знаков препинания :?

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

Сообщение zaf » 08.04.2006 (Сб) 20:43

Amed писал(а):"Спасибо" рано говоришь :)
Для начала подключи в Project|Components Rich TextBox Control и поиграйся с ним. В справку по этому контролу загляни обязательно. Как наиграешься, расскажи еще раз, что именно непонятно в том, что я написал.

З.Ы. угнетает отсутствие знаков препинания :?

Вообщем нашел этот рич!
Создал форму...

Private Sub Command1_Click()
RichTextBox1.Find "zaf"
End Sub

Private Sub Form_Load()
Open "c:\chat.txt" For Input As #2
RichTextBox1.Text = Input$(LOF(2), #2)
Close #2
End Sub

Не могу знать работает или нет:(
Как выделять то что он нашел? если нашел...

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

Сообщение Amed » 08.04.2006 (Сб) 20:50

Код: Выделить всё
Private Sub Command1_Click()
Dim i As Long
With RichTextBox1
    i = .SelStart = .Find "zaf"
    If i > 0 Then
        .SelLength = Len("zaf")
        .SelColor = vbRed
        .SelLength = 0
    End If
End With
End Sub

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

Сообщение zaf » 08.04.2006 (Сб) 20:55

Amed писал(а):
Код: Выделить всё
Private Sub Command1_Click()
Dim i As Long
With RichTextBox1
    i = .SelStart = .Find "zaf"
    If i > 0 Then
        .SelLength = Len("zaf")
        .SelColor = vbRed
        .SelLength = 0
    End If
End With
End Sub


Эту строчку выделяет
i = .SelStart = .Find "zaf"
Пишет Syntax error


Попробовал так RichTextBox1.SelStart = RichTextBox1.Find "zaf"
Тоже самое пишет :(

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

Сообщение Amed » 08.04.2006 (Сб) 21:01

Опечатка, конечно же. Должно быть так:

Код: Выделить всё
Private Sub Command1_Click()
Dim i As Long
With RichTextBox1
    i = .Find "zaf"
    If i > 0 Then
        .SelStart = i
        .SelLength = Len("zaf")
        .SelColor = vbRed
        .SelLength = 0
    End If
End With
End Sub
Последний раз редактировалось Amed 08.04.2006 (Сб) 21:17, всего редактировалось 2 раз(а).

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

Сообщение zaf » 08.04.2006 (Сб) 21:04

Amed писал(а):Опечатка, конечно же. Должно быть так:

Код: Выделить всё
Private Sub Command1_Click()
Dim i As Long
With RichTextBox1
    i = .Find "zaf"
    If i > 0 Then
        .SelStart = i
        .SelLength = Len("zaf")
        .SelColor = vbRed
        .SelLength = 0
    End If
End With
End Sub


У тебя работает?

Private Sub Command1_Click()
With RichTextBox1
i = .Find "zaf"
If i > 0 Then
.SelStart = i
.SelLength = Len("zaf")
.SelColor = vbRed
.SelLength = 0
End If
End With
End Sub

Private Sub Form_Load()
Open "c:\chat.txt" For Input As #2
RichTextBox1.Text = Input$(LOF(2), #2)
Close #2
End Sub

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 08.04.2006 (Сб) 21:13

Код: Выделить всё
i = .Find ( "zaf" )
Последний раз редактировалось vvs_adm 08.04.2006 (Сб) 21:18, всего редактировалось 4 раз(а).
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

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

Сообщение zaf » 08.04.2006 (Сб) 21:13

Может где чего настроить надо?

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

Сообщение Amed » 08.04.2006 (Сб) 21:17

Думай головой, а не копируй мой код. Одна маленькая оставленная мной мина о многом говорит.

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

Сообщение zaf » 08.04.2006 (Сб) 21:21

Ура спасибо всем!

Private Sub Command1_Click()
Dim i As Long
With RichTextBox1
i = .Find ("zaf")
If i > 0 Then
.SelStart = i
.SelLength = Len("zaf")
.SelColor = vbRed
.SelLength = 0
End If
End With
End Sub

Но только одно слово выделяет:(
А их там много...
Как сделать чтобы все выделило?

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

Сообщение Amed » 08.04.2006 (Сб) 21:21


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

Сообщение zaf » 08.04.2006 (Сб) 21:24

Amed писал(а):http://bbs.vbstreets.ru/viewtopic.php?p=6596460#6596460


15:21:54] :zaf > lena: Привет
[15:22:00] :lena > zaf: Привет! Как дела?18:30:13 - qweq> 213ыф: фыавфыв
18:30:15 - qweq> 213ыф: фыавфыв
[18:46:45] - :nasix> vxz324: da
[18:51:31] - :zaf> Rafael: Привет! Как дела?
[18:52:07] - :zaf> Rafael: Привет! Как дела?
[18:52:07] - :zaf> Rafael: Привет! Как дела?
[18:52:15] - :zaf> Rafael: Ты кто?

Вот что получается...
Как сделать чтобы все слова zaf выделились?

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

Сообщение Amed » 08.04.2006 (Сб) 21:27

Я понял. Читай мой первый пост, я там написал, как надо сделать. Если не понял, перечитай раз двадцать. Внимательно. :)

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 08.04.2006 (Сб) 21:31

Даа... мина коварнейшая :)
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

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

Сообщение Amed » 08.04.2006 (Сб) 21:32

vvs_adm, не подсказывай. Так нечестно :)
FAKK2 писал(а):Даа... мина коварнейшая :)

Не говори... Просто противотанковый фугас :)
Последний раз редактировалось Amed 08.04.2006 (Сб) 21:33, всего редактировалось 1 раз.

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

Сообщение zaf » 08.04.2006 (Сб) 21:32

Мерцало мерцало и зависло...:(

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 08.04.2006 (Сб) 21:35

zaf
Ты не проси разжевать все, а подумай головой. Почему этот код не выделяет все вхождения слова? Это же элементарно, прочти топик заново.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

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

Сообщение zaf » 08.04.2006 (Сб) 21:45

А что делает
LOOP?

7ой раз запускаю VB
Пробую разные варианты зависает :oops:


Private Sub Command1_Click()
Dim i As Long
Do

With RichTextBox1
i = .Find("zaf", i)
If i > 0 Then
.SelStart = i
.SelLength = Len("zaf")
.SelColor = vbRed
.SelLength = 0
End If
End With
Loop
While i > 0

End Sub


Почему vvs_adm удаляет сообщения свои?
Уже который раз пишется что он ответил, захожу сюда нифига нет;)

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 08.04.2006 (Сб) 21:49

Amed писал(а):vvs_adm, не подсказывай. Так нечестно :)
А он успел :)

To zaf ну чуть осталось то... :) почитай сначала про циклы в VB
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

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

Сообщение Amed » 08.04.2006 (Сб) 21:51

vvs_adm
Ничего, что успел, мы из него еще сочку-то нацедим :lol:. До последней капельки.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 08.04.2006 (Сб) 21:51

zaf писал(а):Почему vvs_adm удаляет сообщения свои?
Уже который раз пишется что он ответил, захожу сюда нифига нет;)
Это не я, это Amed удаляет, что б я тебе не подсказывал :lol:
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

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

Сообщение zaf » 08.04.2006 (Сб) 21:58

Так

Private Sub Command1_Click()
Dim i As Long
Do

With RichTextBox1
i = .Find("zaf", i)
If i > 0 Then
.SelStart = i
.SelLength = Len("zaf")
.SelColor = vbRed
.SelLength = 0
End If
End With
Loop
While i > 0

End Sub

Тут мы смотрим если i > 0 то выполняем снова!
, Но выполнив мы получаем тоже самое так моно раз повторяется и прога зависает

Надо подумать как сделать чтобы дальше искало
Я прав? :?: :shock:

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

Сообщение zaf » 08.04.2006 (Сб) 22:24

Урааааааааааааааааааааааааааааааааааааааааааааааааааа!


Private Sub Command1_Click()
Dim i As Long

For x = 0 To 100
With RichTextBox1
i = .Find("zaf", i)
If i > 0 Then
.SelStart = i
.SelLength = Len("zaf")
.SelColor = vbRed
.SelLength = 1
i = i + 1
End If
End With
Next x

End Sub

Private Sub Form_Load()
Open "c:\chat.txt" For Input As #2
RichTextBox1.Text = Input$(LOF(2), #2)
Close #2
End Sub

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

Сообщение Amed » 08.04.2006 (Сб) 22:27

Она и начинает с последнего. И находит то же самое, что и в прошлый раз.
Hint. Надо начинать чуть дальше, чем с последнего.

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

Сообщение zaf » 08.04.2006 (Сб) 22:31

Вот еще проще

For i = 0 To 100
With RichTextBox1
i = .Find("zaf", i)
If i > 0 Then
.SelStart = i
.SelLength = Len("zaf")
.SelColor = vbRed
.SelLength = 1

End If
End With
Next i

Только вот одно не радует 100 раз повторяет:(
Как сделать чтобы если слов не нашел тогда стоп!
А наверное пользоваться тем что vvs_adm давал? Только I+1 ставить?
_________
__________
_________

Ага наверное так?

With RichTextBox1
i = .Find("zaf", i)
If i > 0 Then
.SelStart = i
.SelLength = Len("zaf")
.SelColor = vbRed
.SelLength = 0
End If
End With
i = i + 1
Loop While i > 0

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

Сообщение Amed » 08.04.2006 (Сб) 22:33

А в свой код попробуй i+1 подставить.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 08.04.2006 (Сб) 22:36

zaf писал(а):Урааааааааааааааааааааааааааааааааааааааааааааааааааа!
Не Урааааааааааааааааааааааааааааааааааааааааааааааааааа!
а кошмааааааааааааааааааааааарррр!!!!!
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 89

    TopList