SELECCIONA TU IDIOMA

English French German Spain Italian Dutch Russian Portuguese Japanese Korean Arabic Chinese Simplified

viernes, 3 de diciembre de 2010

Seleccionar el renglon de un grid al escribir en textbox y autocompletar vb 2008

Hoy tuve que investigar sobre esto pero no encontre nada, lo que tenia que hacer es que cuando fuera escribiendo en un textbox se fuera selecionando el renglon del grid
que tuviera el mismo texto, asi que como por fin lo pude hacer aqui lo comparto



'Flag para la tecla BackSpace
Public KeyRetroceso As Boolean


Function Autocompletar_Grid(ByVal TBox As TextBox, ByVal Columna As Integer)

Dim i As Integer
Dim pos_SelStart As Integer
If (KeyRetroceso Or Len(TBox.Text) = 0) Then
KeyRetroceso = False
Return False
Exit Function
End If
With gridArticulos
'Recorremos todas las filas del grid
For i = 0 To gridArticulos.Rows.Count - 1
'Busca en el grid si hay coincidencia, en la fila y columna actual
If InStr(1, Trim(gridArticulos(Columna, i).Value), Trim(TBox.Text), vbTextCompare) = 1 Then
pos_SelStart = TBox.SelectionStart
'Asignamos el valor de la celda actual al textbox
TBox.Text = gridArticulos(Columna, i).Value
'Indicamos el comienzo de la selección
TBox.SelectionStart = pos_SelStart
'seleccionamos la porción de texto en el Text
TBox.SelectionLength = Len(gridArticulos(Columna, i).Value) - pos_SelStart
' Seleccionamos la fila
gridArticulos(Columna, i).Selected = True
Exit For
End If
Next i
End With
Return True
End Function

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
' aqui mandamos llamar nuestra funcion para que
' cada que se introduzca un dato se ejecute
' Autocompletar_Grid(aqui nuestro textbox , aqui el numero de columna)
' aqui vamos buscar la clave
Call Autocompletar_Grid(TextBox1, 1)
End Sub

Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
' aqui mandamos llamar nuestra funcion para que
' cada que se introduzca un dato se ejecute
' Autocompletar_Grid(aqui nuestro textbox , aqui el numero de columna)
' aqui vamos buscar la descripcion
Call Autocompletar_Grid(TextBox2, 2)
End Sub



Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
'.. Si la tecla presionada es Backspace o la tecla Delete
If e.KeyCode = Keys.Back Or e.KeyCode = Keys.Delete Then
' ..si hay texto en el Textbox
If Len(TextBox1.Text) <> 0 Then
KeyRetroceso = True
End If
End If
End Sub


Private Sub TextBox2_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox2.KeyDown
'.. Si la tecla presionada es Backspace o la tecla Delete
If e.KeyCode = Keys.Back Or e.KeyCode = Keys.Delete Then
' ..si hay texto en el Textbox
If Len(TextBox2.Text) <> 0 Then
KeyRetroceso = True
End If
End If
End Sub




Despues de hacer todo esto ya podemos escribir en nuestro textbox y veremos como al ir introduciendo datos en el se va a autocompletar y se seleccionara el renglon del grid que sea igual