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