Отображение подходящего элемента в ComboBox при вводе текста

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

Отображение подходящего элемента в ComboBox при вводе текста

Сообщение Space » 26.03.2009 (Чт) 23:29

Интересно, стоит ли при подборе элемента во время ввода показывать список, выделяя подходящий элемент или достаточно показывать найденный элемент в Text? Какое в списке преимущество?

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Отображение подходящего элемента в ComboBox при вводе текста

Сообщение SSecurity » 27.03.2009 (Пт) 0:40

если слова однокорренные ... то лучше списком, потому что если юзер набрал МУР а ты ему даешь "А" как вариант он сразу прочитает "МУРА" - и тут вариант 1, а при списке ты показываешь что кроме "муры" есть ещё "мурка", "мурманск" ... и т.д. проще тыкать будет.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Отображение подходящего элемента в ComboBox при вводе текста

Сообщение Space » 27.03.2009 (Пт) 1:24

что-то я не пойму, по какому принципу работает CB_SELECTSTRING? Нажимаю 1, находит 10 вместо 1, 10 не выделяет в списке, ввод далее (11) невозможен...
Код: Выделить всё
Option Explicit

Private Declare Function SendMessageLong Lib _
    "user32" Alias "SendMessageA" (ByVal hwnd As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As Long
Private Const CB_SHOWDROPDOWN = &H14F
Private Const CB_SELECTSTRING = &H14D

Private Sub Combo1_Change()
Debug.Print "Combo1_Change"
Dim lRet As Long
    ComboListVisible Combo1, True
    lRet = SendMessageLong(Combo1.hwnd, CB_SELECTSTRING, 0, StrPtr(Combo1.Text))
Debug.Print lRet
End Sub


Private Sub ComboListVisible(Combo As ComboBox, ByVal Flag As Boolean)
Dim lRet As Long
    lRet = SendMessageLong(Combo.hwnd, CB_SHOWDROPDOWN, Flag, 0)
    Combo.MousePointer = 0 'иначе мышь пропадает при вводе некого значения и нажатия Enter
End Sub

Private Sub Form_Load()
Dim i As Long
For i = 1 To 20
Combo1.AddItem i
Next i
End Sub


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

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

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

    TopList