'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 |