powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Автозаполнение TEXTBOX по первым буквам
1 сообщений из 1, страница 1 из 1
Автозаполнение TEXTBOX по первым буквам
    #35354058
С помощью приведенного здесь кода можно создать поле текста (TextBox), аналогичное тем, которые реализованы в последних версиях Microsoft Excel или Internet Explorer. Иными словами, каждый раз, когда вы будете вводить какой-либо текст в это поле, первые буквы строки будут сравниваться с элементами невидимого списка, а затем программа сама определит, как следует дописать данную строку, и сделает это за вас.

Для реализации такого поля текста вначале добавьте окно списка к своей форме и установите его свойство Visible как False. В событии Form_Load заполним это окно списка некоторыми элементами. В реальном приложении добавление новых элементов списка следует осуществлять каждый раз, когда пользователь закончит ввод строки. Поместите на форму элемент управления TextBox и введите следующий код:

Код: 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.
51.
52.
Option Explicit
 #If Win32 Then  ' 32-разрядная версия VB
   Private Const LB_FINDSTRING = &H18F
   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
 #Else  ' 16-разрядная версия VB
   Private Const WM_USER = &H400
   Private Const LB_FINDSTRING = (WM_USER +  16 )
   Private Declare Function SendMessage Lib _
     "User" (ByVal hWnd As Integer, ByVal wMsg _
     As Integer,  ByVal wParam As Integer, lParam _
     As Any) As Long
 #End If

Private Sub Form_Load()
  List1.AddItem "Апельсин"
  List1.AddItem "Банан"
  List1.AddItem "Яблоко"
  List1.AddItem "Персик"
  List1.AddItem "Ананас"
  List1.AddItem "Авокадо"
End Sub

Private Sub Text1_Change()
  Dim pos As Long
  List1.ListIndex = SendMessage(List1.hWnd, _
    LB_FINDSTRING, - 1 , ByVal CStr(Text1.Text))
  If List1.ListIndex = - 1  Then
    pos = Text1.SelStart
  Else
    pos = Text1.SelStart
    Text1.Text = List1
    Text1.SelStart = pos
    Text1.SelLength = Len(Text1.Text) - pos End If
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  '
  On Error Resume Next
  If KeyCode =  8  Then ' Backspace
    If Text1.SelLength <>  0  Then
      Text1.Text = Mid$(Text1,  1 , Text1.SelStart -  1 )
      KeyCode =  0 
    End If
  ElseIf KeyCode =  46  Then ' Del
     If Text1.SelLength <>  0  And _
       Text1.SelStart <>  0  Then
       KeyCode =  0 
    End If
  End If
End Sub
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Автозаполнение TEXTBOX по первым буквам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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