powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Автопрокрутка ListBox на нужную запись на лету
16 сообщений из 16, страница 1 из 1
Автопрокрутка ListBox на нужную запись на лету
    #36512712
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!
Помогите пожалуйста сделать следующее:

Есть textbox. Есть ListBox. Listbox заполняется данными из БД (это номера телефонов). Хочу cделать автопрокрутку в этом Listbox за счет ввода данных в textbox'е. При вводе номера в Listbox выбирается (становится синим) самый подходящий (похожий) на момент ввода номер.

Заранее благодарю.
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36512718
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bubek,

- реагируете на событие Change своего текстбокса
- перебираете список List1.List(i) на предмет наиболее подходящего элемента
- найдя его выставляете его текущим: List1.ListIndex=i
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36512728
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Shocker.Pro]bubek,

....
- перебираете список List1.List(i) на предмет наиболее подходящего элемента
....
можно про этот пункт по подробнее? Благодарю!
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36512736
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
For i =  0  to List1.Count -  1 
  'сравниваем List1.List(i) с Text1.Text способом, необходимым для "подходящего" в вашем понимании
  'Вариант1: если подходит - выходим из цикла - Exit For
  'Вариант2: запоминаем "подходящий" i в другой переменной и ищем дальше на предмет более "подходящего"
Next
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36512742
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, вместо Count следует читать ListCount
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36512746
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так в простейшем случае:

Option Explicit
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub Form_Load()

Dim i As Integer
For i =  1  To  30 
  List1.AddItem CStr(Fix(Rnd() *  100000 ))
Next

End Sub
Private Sub Text1_Change()

Dim i As Integer
For i =  0  To List1.ListCount -  1 
  If Left$(List1.List(i), Len(Text1.Text)) = Text1.Text Then Exit For
Next
List1.ListIndex = IIf(i <> List1.ListCount, i, - 1 )
  
End Sub
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36512753
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Все, работает, но только вот строку (самую похожую) не выделяет синим, а просто отображает её в самом низу списка...Как выделять её синим ?

Вот сам код:

Private Sub txtSearch_Change()
For i = 0 To lstAllSIMs.ListCount - 1
If InStr(1, Trim(lstNumbers.List(i)), Trim(txtSearch.Text), vbTextCompare) <> 0 Then
lstAllNumbers.ListIndex = i
Exit For
End If
Next i
End Sub
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36512756
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Сейчас буду пробовать твой код...спасибо!
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36512757
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bubek,

lstAllSIMs
lstNumbers
lstAllNumbers

Три разных списка. Почему это должно работать????
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36512765
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Сорри, по обкурке...т.е. запарке намутил...Вот после твоего кода:

Private Sub txtSearch_Change()

For i = 0 To lstAllSIMs.ListCount - 1
If Left$(lstAllSIMs.List(i), Len(txtSearch.Text)) = txtSearch.Text Then Exit For
Next i
lstAllSIMs.ListIndex = IIf(i <> lstAllSIMs.ListCount, i, -1) 'Exit For
End Sub

Все равно нужная строка выводится в самой нижней по списку строке, но синим не выделяется...

Может у меня ListBox из роду кривой в дистрибутиве? (хоят мышкой выделяет элементы) ...
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36512769
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bubekВсе равно нужная строка выводится в самой нижней по списку строке, но синим не выделяется...

Мультиселект выключи
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36512781
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Понятно :-) Все верно, поиск работает без мультиселекта. Мне этот мультиселект нужен, так как этот листбокс у меня идет как прилавок, там мышью диапазон номеров выбираешь и закидываешь в корзину. Ну будем привыкать к тому, что искомая строка самая нижняя и всё...

Благодарю за помощь!
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36512860
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем же привыкать?
Просто тогда немножко другая технология использования.
Например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Text1_Change()

Dim i As Integer
For i =  0  To List1.ListCount -  1 
  List1.Selected(i) = InStr( 1 , Trim(List1.List(i)), Trim(Text1.Text), vbTextCompare) <>  0 
Next

End Sub

выделяет (синеньким, как ты хотел) все элементы, где есть искомая подстрока

P.S. Это что ж за приложение, где номера телефонов кидаются в корзину?
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36515088
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Вот теперь все встало на места свои ))) Приложение по продаже СИМ карт это.Выбираешь диапазон номеров из листбокса, перекидываешь в другой листбокс (так называемая корзина покупок) и далее нажимаешь на кнопку продать для формирования акта купли продажи и выставления статуса номеров в БД как проданные...

Ты здорово помог, благодарю!
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36517486
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

А у листбокса есть ограничение по количеству строк? Загрузил в него 34000 записей и теперь его Listcount возврашает -31812 ))) что может быть?
...
Рейтинг: 0 / 0
Автопрокрутка ListBox на нужную запись на лету
    #36517574
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Автопрокрутка ListBox на нужную запись на лету
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]