Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
Rojohn
-
- Постоялец

-

-
- Сообщения: 439
- Зарегистрирован: 22.06.2005 (Ср) 11:00
- Откуда: Moscow city
Rojohn » 24.01.2006 (Вт) 17:04
Много раз упомянутый выше автопоиск в ComboBox выводит текст из списка Combo в Combo.text. Но при этом его ListIndex не меняется и остается -1. Как выводить не просто текст, но и его ListIndex?
Процедура автопоиска:
- Код: Выделить всё
Public Sub AutoFillCombo(Combo As ComboBox)
Dim i&, P&, vTxt As String
valComboStr = False
i = SendMessage(Combo.hWnd, CB_FINDSTRING, -1, ByVal Combo.text) + 1
If i > 0 Then
P = Combo.SelStart
Combo.ListIndex = i - 1
Combo.SelStart = P
Combo.SelLength = Len(Combo.text) - P
valComboStr = False
Else
valComboStr = True
End If
End Sub
Private LastComboKeyAscii&
Sub ChangeCombo(ChCombo As ComboBox)
Dim i&, objCB As CCombo
Set objCB = New CCombo
If Not (LastComboKeyAscii = 8) And Not (LastComboKeyAscii = 46) Then
Call objCB.AutoFillCombo(ChCombo)
LastComboKeyAscii = 0
Call objCB.SearchInCombo(ChCombo)
Else
Call objCB.SearchInCombo(ChCombo)
End If
Set objCB = Nothing
Verif_Edit
End Sub
Спасибо за ответы!
P.s.: Очень актуально для меня и нужно вчера...
Последний раз редактировалось
Rojohn 25.01.2006 (Ср) 0:17, всего редактировалось 2 раз(а).
-
alibek
-
- Большой Человек

-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 24.01.2006 (Вт) 17:05
i-1 это и будет наиболее соответствующий ListIndex.
Lasciate ogni speranza, voi ch'entrate.
-
Rojohn
-
- Постоялец

-

-
- Сообщения: 439
- Зарегистрирован: 22.06.2005 (Ср) 11:00
- Откуда: Moscow city
Rojohn » 24.01.2006 (Вт) 17:06
Либо подскажите плз как просто узнать выбрал ли автопоиск реальный элемент из Combo или нет? Без создания отдельной переменной для каждого Combo...
-
Rojohn
-
- Постоялец

-

-
- Сообщения: 439
- Зарегистрирован: 22.06.2005 (Ср) 11:00
- Откуда: Moscow city
Rojohn » 24.01.2006 (Вт) 17:08
Когда поиск нашел значение ListIndex остается =-1 как я не бился...
А i-1 - это внутри модуля. А мне надо проверять в тексте.
-
Rojohn
-
- Постоялец

-

-
- Сообщения: 439
- Зарегистрирован: 22.06.2005 (Ср) 11:00
- Откуда: Moscow city
Rojohn » 24.01.2006 (Вт) 17:50
Можно конечно запоминать для каждого Combo значение переменной valComboStr As Boolean, но это стрёмно. Может можно анализировать как-то по самому Combo и значениям его свойств?
-
Rojohn
-
- Постоялец

-

-
- Сообщения: 439
- Зарегистрирован: 22.06.2005 (Ср) 11:00
- Откуда: Moscow city
Rojohn » 25.01.2006 (Ср) 0:08
Ну как, никто не подскажет? По переменной могу проконтролировать, но надо ещё чтоб ItemData соответствующая поставилась... что никак не выходит.
Хэлп ми плз!
-
GSerg
-
- Шаман

-
-
- Сообщения: 14286
- Зарегистрирован: 14.12.2002 (Сб) 5:25
- Откуда: Магадан
GSerg » 26.01.2006 (Чт) 3:23
Ты нашёл индекс элемента.
Что тебя не устраивает?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас
-
Rojohn
-
- Постоялец

-

-
- Сообщения: 439
- Зарегистрирован: 22.06.2005 (Ср) 11:00
- Откуда: Moscow city
Rojohn » 27.01.2006 (Пт) 2:05
Да... действительно, я просто сразу не понял. Но всё равно нужно делать для каждого Combo свою переменную, запоминающую индекс i-1. Но зато всё работает

Спасибо!
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot, Yandex-бот и гости: 7