Поиск в ListBox'e (?)

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

Поиск в ListBox'e (?)

Сообщение Tok » 22.05.2004 (Сб) 1:46

Нужно найти Item в Листе. Т. е. если есть в итемах некоторая строчка, то MsgBox "True".
Back from the dead
I am resurrected
to spew, putrefaction...
http://gutted.nm.ru

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 22.05.2004 (Сб) 14:51

1)
Код: Выделить всё
Sub FindString(ByVal What As String)
Dim I&
For I = 0 To List1.ListCount - 1
List1.ListIndex = I
If List1.Text = What Then MsgBox "Есть": Exit Sub
Next
MsgBox "Нет"
End Sub

2)
Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long

Private Const LB_FINDSTRING As Long = &H18F

Sub FindString(ByVal What As String)
Dim Res1&, Res2 As Boolean
Res1 = SendMessage(List1.hWnd, LB_FINDSTRING, -1, What)
Select Case Res1
Case 0
MsgBox "Нет!"
Case Else
MsgBox "Есть!"
End Select
End Sub
Нет меня больше

Tok
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 28.09.2003 (Вс) 16:14
Откуда: Алчевск (Украина)

Сообщение Tok » 23.05.2004 (Вс) 2:15

Спасибо! Как все оказалось просто...
Еще раз - Большое Спасибо!
Back from the dead
I am resurrected
to spew, putrefaction...
http://gutted.nm.ru

Tok
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 28.09.2003 (Вс) 16:14
Откуда: Алчевск (Украина)

Сообщение Tok » 28.05.2004 (Пт) 4:00

Хм... Почему-то второй код находит строку только если она первая в листбоксе. (?)

А в первом коде подскажите как продолжить действия после MsgBox "Есть", т.е. после этой мессаги мне надо где-то кнопочку сделать активной, где-то что-то скрыть\показать?
Просто еще никогда не встречал строку со странным двоеточием (If List1.Text = What Then MsgBox "Есть": Exit Sub)...
Back from the dead
I am resurrected
to spew, putrefaction...
http://gutted.nm.ru

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 28.05.2004 (Пт) 11:45

Двоеточие - это то же самое, что и переход на другую строку. То есть куски
Код: Выделить всё
If List1.Text = What Then MsgBox "Есть": Exit Sub

и
Код: Выделить всё
If List1.Text = What Then
MsgBox "Есть"
[сюда можно вставить что-то своё]
Exit Sub
End if

абсолютно идентичны
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

Tok
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 28.09.2003 (Вс) 16:14
Откуда: Алчевск (Украина)

Сообщение Tok » 29.05.2004 (Сб) 2:54

Да, но тогда выскакивает ошибка компиляции: "Next without For"!
Back from the dead
I am resurrected
to spew, putrefaction...
http://gutted.nm.ru


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

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

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

    TopList  
cron