SearchCombo




Const CB_FINDSTRING As Long = &H14C
Const CB_FINDSTRINGEXACT As Long = &H158
Const LB_FINDSTRING As Long = &H18F
Const LB_FINDSTRINGEXACT As Long = &H1A2
Declare Function SendMessageAsStr Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal sParam As String) As Long

'Cerca una stringa in un controllo ListBox o ComboBox

'restituendo l'indice in cui si trova

'o -1 se non trovata. Se bExact = vero allora

'viene effettuata una ricerca ESATTA


Public Function FindInList(ctl As Object, sDato As String, _

Optional ByVal bExact As Boolean) As Integer

'Fallisce di default


FindInList = -1

'Confronta le stringhe ignorando la


'differenza tra maiuscole e minuscole


If TypeOf ctl Is ComboBox Then

If bExact Then

FindInList = SendMessageAsStr( _

ctl.hwnd, CB_FINDSTRINGEXACT, -1, sDato)

Else

FindInList = SendMessageAsStr( _

ctl.hwnd, CB_FINDSTRING, -1, sDato)

End If

ElseIf TypeOf ctl Is ListBox Then

If bExact Then

FindInList = SendMessageAsStr( _

ctl.hwnd, LB_FINDSTRINGEXACT, -1, sDato)

Else

FindInList = SendMessageAsStr( _

ctl.hwnd, LB_FINDSTRING, -1, sDato)

End If

End If

End Function In VB non esiste un modo per ricercare direttamente un Item
di cui conosciamo il contenuto all'interno di un ComboBox
o ListBox:

usando le API di Windows e' invece possibile.

Ecco una funzione che sfrutta i messaggi specifici per
questi controlli










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