Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Octubre 26, 2011, 08:23:32 am
-
Hola amigos tengo en un listview cargado con un listado de categorias con su ID y su Descripción como muestra la imagen y quisiera que estando el foco en el listview al presionar la tecla P por ejemplo se vaya la seleccion al primer item que coincida con esa letra del campo Decripcion.
Es posible?
(http://www.misimagenesgratis.com.ar/images/listCat.jpg)
-
HOLA!!!
Es muy posible... pero es codigo de kinder gardenn..
1ro El Listview ya trae esa funcion. (para la primera columna)
Tenes que captar (catch) la letra, convertirla en letra luego hacer un bucle que compare con los items y apenas vea la letra capturada salga del bucle y seleccione ese indice.
GRACIAS POR LEER!!!
Edito:(xkiz)
esto es un foro para ayudar a otras personas no para poner en duda el intelecto de los demas.
en Reglas del Foro - Leer (http://leandroascierto.com/foro/index.php?topic=3.0) esta expresado no insultar a nadie y referirse que el codigo es de Jardin de niños no es lo apropiado.
-
Gracias por tu respuesta!! --No tenemos todo la posibilidad de estar tan avanzados como vos para que te refieras a que esto es para niños de jardin...
Juntando Mensajes.
Gracias al 79137913 que me trato de infantil encontré la solución la verdad que era bastante fácil pero a veces uno anda medio bloqueado con todos los kilombos de la cabeza! , aquí posteo el codigo por ai alguno le sirve a futuro.
Private Sub lvwListados_KeyDown(KeyCode As Integer, Shift As Integer)
Dim n
Dim letra
letra = Chr(KeyCode)
For n = 1 To Me.lvwListados.ListItems.Count
If letra = Left(lvwListados.ListItems(n).SubItems(1), 1) Then
lvwListados.ListItems(n).Selected = True
lvwListados.ListItems(n).EnsureVisible
Exit For
End If
Next
End Sub
-
Yo tengo este Miguel Este metodo busca en cualqueir parte del ListView por ejemplo si en columna 2 tenes CAJAS DE CHAPA si escribis CHAPA igual te encuentra.
Private Sub Command1_Click()
Dim ret As Long
If Listview1.ListItems.Count = 0 Then
Text1.SetFocus
Else
ret = Buscar(Listview1, Text1.Text, 1, False)
If ret <> 0 Then
Listview1.ListItems(ret).Selected = True
Listview1.ListItems(ret).EnsureVisible
Else
'MsgBox "Dato no encontrado", vbExclamation
End If
Text1.SetFocus
End If
End Sub
Function Buscar(Lv As ListView, Cadena As String, nCol As Integer, bFraseCompleta As Boolean) As Long
Dim i As Long
Dim iStart As Long
Dim oItem As ListItem
If Not Lv.SelectedItem Is Nothing Then
iStart = Lv.SelectedItem.Index + 1
Else
iStart = 1
End If
With Lv
For i = iStart To Lv.ListItems.Count
Set oItem = Lv.ListItems(i)
Dim sItem As String
If nCol = 0 Then
sItem = Lv.ListItems(i)
Else
sItem = oItem.SubItems(nCol)
End If
If bFraseCompleta = False Then
Dim nPos As Integer
nPos = InStr(LCase(sItem), LCase(Cadena))
If nPos <> 0 Then
Buscar = oItem.Index
oItem.EnsureVisible
Exit For
End If
ElseIf bFraseCompleta = True Then
If LCase(sItem) = LCase(Cadena) Then
Buscar = oItem.Index
oItem.EnsureVisible
Exit For
End If
End If
Next
End With
Set Lv.SelectedItem = Nothing
End Function
-
usa la api SendMessage para buscar en un listview, es mucho mas rapido y no tenes bucles, en recursosvisualbasic tenes ejemplos.
-
Buenisimo gracias a todos!!