powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ComboBox
10 сообщений из 10, страница 1 из 1
ComboBox
    #33266085
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте все!
Подскажите пожалуйста можно ли в VB сделать подобное:
Есть combobox со списком пользователей, так вот надо, чтоб при вводе первых символов сразу подсвечивалась нудная строчка и не надо было нажимать стрелку вниз. Получается система как в 1С, но это надо реализовать в VB.

Заранее спасибо.
...
Рейтинг: 0 / 0
ComboBox
    #33266248
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private Sub ComboAutoComplete(cmb As ComboBox)
    Dim txt As String, pos As Long, txtlen As Long
    Dim matchcount As Long, complword As String
    Dim maxi As Long, i As Long, cmbindex As Long
    
    txt = cmb.Text
    txtlen = Len(txt)
    pos = cmb.SelStart
    maxi = cmb.ListCount -  1 
    For i =  0  To maxi
        If StrComp(txt, Left$(cmb.List(i), txtlen), vbTextCompare) =  0  Then
            matchcount = matchcount +  1 
            If matchcount =  1  Then
                complword = cmb.List(i)
                cmbindex = i
            End If
        End If
    Next
    If matchcount =  1  Then
        cmb.ListIndex = cmbindex
        cmb.SelStart = pos
        cmb.SelLength = Len(complword) - pos
    End If
End Sub
...
Рейтинг: 0 / 0
ComboBox
    #33267675
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Melkiades код хороший, работает, вот только одна заморочка:
У меня в базе (в выборке) есть поля: пользователь 1, пользователь 2, перенос материалов и т.д. Когда я в комбобоксе набираю "п" он выдает правильно "пользователь 1", проблемы начинаются когда я начинаю вводить дальше. Допустим совершилась опечатка и вместо "е" набрано "о", при этом он так же высвечивает правильно, но когда замечаешь опечатку и пытаешься стереть последний набранный символ, то это не к чему не приводит т.к. существуют варианты с набранной последовательностью, комбо не дает. Вот и получается, что комбо не дает возможность на ошибку, чтобы стереть набранное надо согласиться с предлагаемым вариантом, потом выделить все и удалить, а это не совсем удобно.
Можно ли с этим как-нибудь бороться?
...
Рейтинг: 0 / 0
ComboBox
    #33267891
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выделять все не нужно, он сам выделяет окончание слова, помимо которого существуют другие варианты окончаний. А проверкой орфографии я не занимаюсь.
...
Рейтинг: 0 / 0
ComboBox
    #33267993
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выделять то он выделяет, но стереть последнюю набранную букву, чтобы уйти на другой вариант, не представляется возможным
...
Рейтинг: 0 / 0
ComboBox
    #33268035
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А два раза BackSpace нажать?
...
Рейтинг: 0 / 0
ComboBox
    #33268206
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хоть 10 раз нажимаю, бесполезно, не момогает если есть хоть 1 вариант из выборки, да забыла сказать, в этом условии, я заменила = на >=, а то он выдает подсветку только когда имеется 1 вариант

Melkiades
Код: plaintext
1.
2.
3.
4.
5.
    If matchcount >=  1  Then
        cmb.ListIndex = cmbindex
        cmb.SelStart = pos
        cmb.SelLength = Len(complword) - pos
    End If
...
Рейтинг: 0 / 0
ComboBox
    #33268291
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я вообще правильно делая вызывая эту процедуру на Combo1_Change или надо на другое событие её вешать?
...
Рейтинг: 0 / 0
ComboBox
    #33268307
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На Key_Up!
...
Рейтинг: 0 / 0
ComboBox
    #33268576
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работает, вот только не на двойной клик по BackSpace, а по его удержанию 2сек. и стирает он при этом достаточно быстро, возможно это какие-то местные настройки, если знаешь, то подскажи пожалуйста, если нет, то и на том ОГРОМНОЕ СПАСИБО, ОЧЕНЬ ПОМОГ!!! :-))
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ComboBox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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