ListBox, найти и выделить

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

ListBox, найти и выделить

Сообщение GAL » 07.06.2005 (Вт) 11:42

Привет!
Есть ListBox заполненный из базы данных (ну это не существенно), делаю по нему поиск. Ищет только до первого условия поиска, а нужно чтобы, либо по порядку шел, либо выделял сразу все, что совпадает с условием поиска.
Как сделать?..

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 07.06.2005 (Вт) 12:12

Элементарно! Ща напишу...
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 07.06.2005 (Вт) 12:30

Вот, а ты как поиск производил? While'ом наверное?

( На форме кнопка-Command1 Текстбокс-Text1 лист-List1 ( св-во MultiSelect=1 )
Код: Выделить всё
Private Sub Command1_Click()
    For i = 0 To List1.ListCount - 1
        If List1.List(i) = Text1.Text Then List1.Selected(i) = True
    Next i
End Sub

Private Sub Form_Load()
    List1.AddItem "Jenizix"
    List1.AddItem "VbStreets.RU"
    List1.AddItem "Visual Basic"
    List1.AddItem "GAL"
    List1.AddItem "Jenizix"
    List1.AddItem "VbStreets.RU"
    List1.AddItem "Visual Basic"
    List1.AddItem "GAL"
   
    Text1.Text = vbNullString
    Command1.Caption = "Search"
End Sub
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

Сообщение GAL » 07.06.2005 (Вт) 14:03

Jenizix, код работает если находить только полное имя, а мне нужно указать часть слова и поиск внутри слов.
Поможешь?
Вот мой код:
Dim PosNow As Integer
Dim i As Integer
Dim tmp1 As String
Dim tmp2 As String
Dim orig As Integer

'переносимся на первую строку
If List1.ListIndex = List1.ListCount - 1 Then List1.ListIndex = 0

orig = List1.ListIndex
If List1.ListIndex = Val(List1.Tag) Then List1.ListIndex = List1.ListIndex + 1

PosNow = List1.ListIndex

If chk_register.Value = 1 Then
tmp2 = LCase$(txt_FindText.text)
Else
tmp2 = txt_FindText.text
End If

Do
DoEvents

For i = PosNow To List1.ListCount - 1
List1.ListIndex = i
tmp1 = List1.text
If chk_register.Value = 1 Then tmp1 = LCase$(tmp1)

'Стадия первая: обычный поиск/поиск с регистром
If tmp1 = tmp2 Then 'нашли и выходим из списка
PrintResult PosNow, i, txt_FindText.text
Exit Do
End If

'Стадия вторая: поиск внутри значений
If chk_FindInText.Value = 1 Then
lndx = InStr(tmp1, tmp2)
If lndx Then
PrintResult PosNow, i, txt_FindText.text
Exit Do
End If
End If


Next i

'ничего не нашли
List1.ListIndex = orig
lbl_Result.Caption = "Поиск неудачен."

Exit Do 'выходим из него
Loop

GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

Сообщение GAL » 07.06.2005 (Вт) 14:08

Jenizix, код работает если находить только полное имя, а мне нужно указать часть слова и поиск внутри слов. - Я имел ввиду твой код.
В моем то работает и часть слова и внутри слова, но поиск только до первого значения..

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 07.06.2005 (Вт) 14:14

Ща посмотрю...
Выделяй код тегом [code] или [syntax="vb"] !!!!!
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 07.06.2005 (Вт) 14:24

Попробуй убери Exit Do из первой и второй стадии
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 07.06.2005 (Вт) 14:31

Хотя намудрил ты ИМХО черезчур!!!
Ну не люблю я всякие Do-Loop

Вот попробуй этот код:
Код: Выделить всё
Private Sub Command1_Click()
If Text1.Text <> vbNullString Then
    For i = 0 To List1.ListCount - 1
        List1.Selected(i) = False
        If List1.List(i) = Text1.Text Then List1.Selected(i) = True
        If InStr(1, List1.List(i), Text1.Text) Then List1.Selected(i) = True
    Next i
End If
End Sub

Private Sub Form_Load()
    List1.AddItem "Jenizix"
    List1.AddItem "VbStreets.RU"
    List1.AddItem "Visual Basic"
    List1.AddItem "GAL"
    List1.AddItem "Jenizix"
    List1.AddItem "VbStreets.RU"
    List1.AddItem "Visual Basic"
    List1.AddItem "GAL"
   
    Text1.Text = vbNullString
    Command1.Caption = "Search"
End Sub


Или я опять чегото не понял???
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

Сообщение GAL » 07.06.2005 (Вт) 14:42

Все. Вижу.
Разобрался.
Спасибо за помощь.


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 190

    TopList