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

Заранее спасибо.
...
Рейтинг: 0 / 0
13.09.2005, 13:28:53
    #33266248
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox
Код: 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
14.09.2005, 05:53:35
    #33267675
Plux
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox
Спасибо Melkiades код хороший, работает, вот только одна заморочка:
У меня в базе (в выборке) есть поля: пользователь 1, пользователь 2, перенос материалов и т.д. Когда я в комбобоксе набираю "п" он выдает правильно "пользователь 1", проблемы начинаются когда я начинаю вводить дальше. Допустим совершилась опечатка и вместо "е" набрано "о", при этом он так же высвечивает правильно, но когда замечаешь опечатку и пытаешься стереть последний набранный символ, то это не к чему не приводит т.к. существуют варианты с набранной последовательностью, комбо не дает. Вот и получается, что комбо не дает возможность на ошибку, чтобы стереть набранное надо согласиться с предлагаемым вариантом, потом выделить все и удалить, а это не совсем удобно.
Можно ли с этим как-нибудь бороться?
...
Рейтинг: 0 / 0
14.09.2005, 09:41:14
    #33267891
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox
Выделять все не нужно, он сам выделяет окончание слова, помимо которого существуют другие варианты окончаний. А проверкой орфографии я не занимаюсь.
...
Рейтинг: 0 / 0
14.09.2005, 10:23:01
    #33267993
Plux
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox
Выделять то он выделяет, но стереть последнюю набранную букву, чтобы уйти на другой вариант, не представляется возможным
...
Рейтинг: 0 / 0
14.09.2005, 10:36:05
    #33268035
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox
А два раза BackSpace нажать?
...
Рейтинг: 0 / 0
14.09.2005, 11:12:18
    #33268206
Plux
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox
Хоть 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
14.09.2005, 11:29:08
    #33268291
Plux
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox
я вообще правильно делая вызывая эту процедуру на Combo1_Change или надо на другое событие её вешать?
...
Рейтинг: 0 / 0
14.09.2005, 11:32:55
    #33268307
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox
На Key_Up!
...
Рейтинг: 0 / 0
14.09.2005, 12:28:41
    #33268576
Plux
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox
Работает, вот только не на двойной клик по BackSpace, а по его удержанию 2сек. и стирает он при этом достаточно быстро, возможно это какие-то местные настройки, если знаешь, то подскажи пожалуйста, если нет, то и на том ОГРОМНОЕ СПАСИБО, ОЧЕНЬ ПОМОГ!!! :-))
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ComboBox / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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