Tema: filtro
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26-11-2006, 16:55:24
craftyman craftyman is offline
Un Nuevo Amigo
 
Registrado: nov 2006
Posts: 1
craftyman Valoración +2
Predeterminado

Te dejo este codigo aver si te sirve de ayuda, es para filtrar con combobox.

Option Explicit

'Función Api SendMessageLong

Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Backspaced As Boolean 'Flag

Private Sub Combo1_Change()
'Le pasamos el combo como parámetro
AutoComplete Combo1
End Sub

Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)

Select Case KeyCode

Case vbKeyBack, vbKeyDelete

Select Case Len(Combo1.Text)

Case Is <> 0
Backspaced = True

End Select
End Select

End Sub

'Función para autocompletar el combo.
Public Function AutoComplete(ctlComboBox As Control)
Dim i%, intSel% '

Select Case (Backspaced Or Len(ctlComboBox.Text) = 0)
Case True: Backspaced = False: Exit Function
End Select

With ctlComboBox
'RECORREMOS LOS ITEMS DEL COMBO BUSCANDO LA COINCIDENCIA
'DE LO QUE HAYA ESCRITO
For i = 0 To .ListCount - 1
If InStr(1, .List(i), .Text, vbTextCompare) = 1 Then
intSel = .SelStart
.Text = .List(i)
.SelStart = intSel
.SelLength = Len(.Text) - intSel
Exit For

End If
Next i
End With

End Function

Private Sub Combo1_KeyPress(KeyAscii As Integer)

'Esta linea es para que se despliegue la lista mientras escribimos _
pero si presionas la teclaEnter hacemos lo contrario, la cerramos _
fijate que esto lo determina la variable booleana TRue y False _
en el 3º parametro de la funcion APi
Dim resp As Integer

'Si se presionó enter
If KeyAscii = 13 Then
SendMessageLong Combo1.hwnd, &H14F, False, 0
Else
'Si no siempre la lista desplegada
SendMessageLong Combo1.hwnd, &H14F, True, 0
End If
End Sub

Private Sub Form_Load()

'Llenamos el combo con algunos elementos

With Combo1
.AddItem "Pedro"
.AddItem "Marcelo"
.AddItem "Mariano"
.AddItem "Carolina"
.AddItem "Jose"
.AddItem "Maria"
.AddItem "Estela"
.AddItem "Fernando"
.AddItem "Rodrigo"
End With

End Sub
__________________
**El destino no esta escrito, cada uno marca el suyo
Responder Con Cita