AutoSearchCombo



'Inserire il codice seguente in un modulo standard

'(file BAS):


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

Public Const CB_FINDSTRING = &H14C

'Se si utilizza VB a 16-bit, fare le opportune

'modifiche alla istruzione di dichiarazione.


'C'e' bisogno di una variabile statica -- cioe' che

'mantiene il proprio valore tra una chiamata e

'l'altra ad una sub o ad una funzione -- per tener

'nota di quanti caratteri sono stati immessi nel

'combo.


'Inserire il codice seguente nell'evento Change del

combo box:

Private Sub Combo1_Change()
Dim iStart As Integer
Dim sString As String
Static iLeftOff As Integer

iStart = 1
iStart = Combo1.SelStart

If iLeftOff <> 0 Then
Combo1.SelStart = iLeftOff

iStart = iLeftOff
End If

sString = CStr(Left(Combo1.Text, iStart))
Combo1.ListIndex = SendMessage(Combo1.hwnd, _
CB_FINDSTRING, -1, ByVal CStr(Left( _
Combo1.Text, iStart)))

If Combo1.ListIndex = -1 Then
iLeftOff = Len(sString)
Combo1.Text = sString
End If

Combo1.SelStart = iStart
iLeftOff = 0
End Sub

'La variabile statica iLeftOff aiuta a determinare

'da quanti caratteri e' composta la variabile sString

che poi verra' passata alla funzione API.

'Eseguire l'applicazione e notare che il cursore e'

'posizionato correttamente via via che si

inseriscono i caratteri. Il combo box mostra un
nome se VB trova una corrispondenza; altrimenti
appare solo il testo digitato.

ZD Tips © 1998 by Mauro Rossi

(autosearchcombo.html)- by Paolo Puglisi - Modifica del 25/3/2019