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 Un combo box auto-ricercante trova una voce nella
lista mentre l'utente scrive nella porzione di testo
del combo. Per questo esempio e' possibile usare la
tabella Autori (Authors) dal database contenuto in
Visual Basic BIBLIO.MDB










( autosearchcombo.html )- by Paolo Puglisi - Modifica del 17/12/2023