|
Option Explicit
#If Win32 Then 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 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 "Orange" List1.AddItem "Banana" List1.AddItem "Apple" List1.AddItem "Pear" 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 Text1.Text = "" KeyCode = 0 End If End If End Sub |