Как сделать автозаполнение ComboBox'a?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Vampiros
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 27.07.2003 (Вс) 8:38
Откуда: Иркутск

Как сделать автозаполнение ComboBox'a?

Сообщение Vampiros » 27.07.2003 (Вс) 8:42

Скажите как в ComboBox'е сделать чтобы было автозаполнение т.е. по первым буквам выскакивал лист с похожими вариантами...
Может это и легко,но я новичек,помогите советом...
Заранее всем благодарен.

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 28.07.2003 (Пн) 13:53

Код: Выделить всё
Option Explicit

Public Enum WindowMessageConstants
    cbFindString = &H14C&
    lbFindString = &H18F&
End Enum

Private Declare Function SendMessage Lib "user32" _
    Alias "SendMessageA" ( _
        ByVal hWnd As Long, _
        ByVal wMsg As WindowMessageConstants, _
        ByVal wParam As Long, _
        lParam As Any) _
    As Long

Private LastComboKeyAscii As Long

Function FindByValue(ListControl As Control, Optional ByVal Value As String) As Long
   
    Dim i As Long, msg As Long
   
    If TypeOf ListControl Is ComboBox Then
        msg = WindowMessageConstants.cbFindString
        If Value = vbNullString Then Value = ListControl.Text
    ElseIf TypeOf ListControl Is ListBox Then
        msg = WindowMessageConstants.lbFindString
    Else
        Exit Function
    End If
    i = SendMessage(ListControl.hWnd, msg, -1&, ByVal Value)
    FindByValue = i + 1
End Function

Private Sub Combo1_Change()
   
    Dim i%
    Dim p%
   
    Select Case LastComboKeyAscii
    Case 8, 46
    Case Else
        With Combo1
            i = FindByValue(Combo1, .Text)
            If (i) Then
                p = .SelStart
                .ListIndex = i - 1
                .SelStart = p
                .SelLength = Len(.Text) - p
            End If
        End With
    End Select
   
    LastComboKeyAscii = 0
   
End Sub

Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
    LastComboKeyAscii = KeyCode
End Sub

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 28.07.2003 (Пн) 14:35

Можно ещё FM20.dll использовать, но там проблема с отображением русских букв под 2000.
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

Vampiros
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 27.07.2003 (Вс) 8:38
Откуда: Иркутск

Сообщение Vampiros » 12.09.2003 (Пт) 9:16

А можно теперь то же самое, только для DataCombo?


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

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

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

    TopList