Postada em 26/01/2007 19:00 hs
Duas rotinas, a Combo1_Change() que auto preenche o combo de acordo com o texto encontrado e uma outra Combo1_LostFocus() que impede que o Compo perca o focus se o texto digitado não existir...
PS: Declare as variaveis... OK?
Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long
Const CB_FINDSTRING As Long = &H14C Const CB_ERR As Long = (-1)
Private Sub Combo1_Change() With Combo1 'Procura pelo texto já digitado strPartial = .Text I = SendMessage(.hwnd,CB_FINDSTRING,-1, _ ByVal strPartial)
'Se achou, adiciona o resto do Texto If I <> CB_ERR Then 'Pega o texto inteiro strTotal = .List(I)
'Compute number of unmatched characters j = Len(strTotal) - Len(strPartial) If j <> 0 Then 'Adiciona o resto da string encontrada m_bEditFromCode = True .SelText = Right$(strTotal, j)
'Marca os caracteres adicionados .SelStart = Len(strPartial) .SelLength = j End If End If End With End Sub
Private Sub Combo1_LostFocus() With Combo1 if Len(.Text) then 'Procura pelo texto digitado strPartial = .Text I = SendMessage(.hwnd,CB_FINDSTRING,-1,ByVal strPartial) 'Se não achou, retorna o focus para o Combo If I = CB_ERR Then .SetFocus End if End With End Sub
.:Rodrigo Bedin:.
|