Автопоиск в Combo... как установить ItemData?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Автопоиск в Combo... как установить ItemData?

Сообщение 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 соответствующая поставилась... что никак не выходит.

Хэлп ми плз!

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Сообщение Rojohn » 26.01.2006 (Чт) 0:36

Люююдиии.... :?

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

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

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

    TopList