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

-
-
- Сообщения: 818
- Зарегистрирован: 11.01.2007 (Чт) 1:19
- Откуда: Украина
Space » 26.03.2009 (Чт) 23:29
Интересно, стоит ли при подборе элемента во время ввода показывать список, выделяя подходящий элемент или достаточно показывать найденный элемент в Text? Какое в списке преимущество?
-
SSecurity
-
- Служба безопасности
-

-
- Сообщения: 1283
- Зарегистрирован: 19.08.2003 (Вт) 1:11
- Откуда: Россия, Мурманск
-
SSecurity » 27.03.2009 (Пт) 0:40
если слова однокорренные ... то лучше списком, потому что если юзер набрал МУР а ты ему даешь "А" как вариант он сразу прочитает "МУРА" - и тут вариант 1, а при списке ты показываешь что кроме "муры" есть ещё "мурка", "мурманск" ... и т.д. проще тыкать будет.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)
-
Space
-
- Combo-маньяк

-
-
- Сообщения: 818
- Зарегистрирован: 11.01.2007 (Чт) 1:19
- Откуда: Украина
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
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 2