powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вытащить из ComboBox всю строку ?
7 сообщений из 7, страница 1 из 1
Как вытащить из ComboBox всю строку ?
    #37278581
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем здравствуйте !

Имеем заполненный ComboBox из БД.

161/Строка первая
162/Строка вторая
....
nnn/Строка NNN

Для быстрого ввода, пользователь набирает только первые символы - 16. ,
высветить все содержимое строки (без нажатия мышкой ! ) и Enter-ом продвигаться
к следующему комбо.

Спасибо.
...
Рейтинг: 0 / 0
Как вытащить из ComboBox всю строку ?
    #37278629
DUDALS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

Private Sub cmbMarka_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
Call IncrementalSearchCombo(cmbMarka, KeyAscii)
End Sub

'в модуле
Public Sub IncrementalSearchCombo(cboIn As ComboBox, intKeyAscii As Integer)
Dim lngItemIndex As Long
Dim strFindString As String

If intKeyAscii < 32 Or (intKeyAscii > 175 And intKeyAscii < 224 And intKeyAscii > 239) Then
Exit Sub
End If

If cboIn.SelLength = 0 Then
strFindString = cboIn.Text & Chr$(intKeyAscii)
Else
strFindString = Left$(cboIn.Text, cboIn.SelStart) & Chr$(intKeyAscii)
End If

lngItemIndex = SendMessage(cboIn.hwnd, CB_FINDSTRING, -1&, ByVal strFindString)

If lngItemIndex <> CB_ERR Then
cboIn.ListIndex = lngItemIndex
cboIn.Text = cboIn.List(lngItemIndex)
cboIn.SelStart = Len(strFindString)
cboIn.SelLength = Len(cboIn.Text) - cboIn.SelStart
intKeyAscii = 0
Else
'Beep
End If
End Sub
...
Рейтинг: 0 / 0
Как вытащить из ComboBox всю строку ?
    #37278787
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
lngItemIndex = SendMessage(cboIn.hwnd, CB_FINDSTRING, - 1 &, ByVal strFindString)

Ругается на функцию. Не находит такую ...
...
Рейтинг: 0 / 0
Как вытащить из ComboBox всю строку ?
    #37278789
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это из API
...
Рейтинг: 0 / 0
Как вытащить из ComboBox всю строку ?
    #37278790
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

ее надо декларировать в модуле или модуле класса
Код: plaintext
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
...
Рейтинг: 0 / 0
Как вытащить из ComboBox всю строку ?
    #37278819
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел в инет. Счс пробую
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
Option Explicit
Private Const CB_FINDSTRING = &H14C
Private Const CB_SHOWDROPDOWN = &H14F
Private Const LB_FINDSTRING = &H18F
Private Const CB_ERR = (- 1 )

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

Private Sub Form_Load()
    Combo1.AddItem "French fries"
    Combo1.AddItem "Hamburgers"
    Combo1.AddItem "Milkshakes"
    Combo1.AddItem "Onion rings"
    Combo1.AddItem "Ice"
    Combo1.AddItem "Ice cream"
End Sub

Private Sub Combo1_GotFocus()
    SendMessage Combo1.hwnd, CB_SHOWDROPDOWN,  1 , ByVal  0 &
End Sub

Private Sub Combo1_KeyPress(KeyAscii As Integer)

    Dim CB As Long
    Dim FindString As String
    
    If KeyAscii <  32  Or KeyAscii >  127  Then Exit Sub
    
    If Combo1.SelLength =  0  Then
        FindString = Combo1.Text & Chr$(KeyAscii)
    Else
        FindString = Left$(Combo1.Text, Combo1.SelStart) & Chr$(KeyAscii)
    End If
    
    SendMessage Combo1.hwnd, CB_SHOWDROPDOWN,  1 , ByVal  0 &

    CB = SendMessage(Combo1.hwnd, CB_FINDSTRING, - 1 , ByVal FindString)
    
    If CB <> CB_ERR Then
        Combo1.ListIndex = CB
        Combo1.SelStart = Len(FindString)
        Combo1.SelLength = Len(Combo1.Text) - Combo1.SelStart
    End If
    
    KeyAscii =  0 
    
End Sub
...
Рейтинг: 0 / 0
Как вытащить из ComboBox всю строку ?
    #37278873
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В модуле логичнее.
DUDALS спасибо.
Спасибо всем .
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вытащить из ComboBox всю строку ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]