elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  busqueda automática mientras se escribe
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: busqueda automática mientras se escribe  (Leído 2,216 veces)
seba64

Desconectado Desconectado

Mensajes: 3


Ver Perfil
busqueda automática mientras se escribe
« en: 21 Octubre 2021, 01:16 am »

Tengo un text donde el usuario debe ingresar un texto a buscar. Uso timer, el objeto no la función, haciendo que cada vez que el text cambie el intervalo del timer cambie a 2000 milisegundos. pero esto no ocurre. La idea es que el usuario escriba el texto a buscar y una vez que deje de escribir, se realizce la busqueda de forma automática sin que haya la necesidad de un botón para hacerlo. ¿Alguna idea de como hacer esto?


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: busqueda automática mientras se escribe
« Respuesta #1 en: 21 Octubre 2021, 02:39 am »

En principio el problema es saber 'cuando el usuario deja de escribir', precisamente para eso se usa un botón 'aceptar'. Así el usuario indica explícitamente que ha temrinado con la entrada de datos.

No obstante siendo es la opción obvia hay otras cuando se quiere alguna otra cosa como es tu caso.
Una de ellas es usar el evento validating, no el de change...
El evento validating, sucede cuando se pulsa otro control, es decir cuando el foco del cursor se intenta dirigir a otra parte, antes de que se abandone el foco de dicho objeto (al caso supongo un textbox), salta dicho evento...  requiere eso sí que el usuario realice alguna acción de pulsar en otra parte, si simplemente no hace nada, pues el evento no salta.
Pero en realidad el evento validating, suele usar para garantizar que los datos introducidos reúnen el formato requerido (cuando es el caso).

Es entonces cuando tiene sentido usar un timer...
El timer lo activas en primer lugar cuando el control gana el foco, y lo actualizas (reset el timer a 0) cada vez que sucede un evento change (sucede con cada carácter añadido o eliminado), entonces si tras reactivarse el timer, el lapso se consume (pongamos 1-2sg. es cuando resulta pertienente hacer la búsqueda con los caracteres que contiene el textbox...


Básicamente es este pseudocódigo.
Código:
sub form_load ...
   timer.interval = 1500   ' debes probar con varios valores de intéralo, hasta que estés satisfecho con la espera.
   timer.enabled = false   ' salvo que sea el único control en el form que entonces ganará el foco sí o si.
fin sub

sub textbox_gotfocus ...
    timer.enabled = true
fin sub

sub textbox_change ...
   timer.enabled = true
fin sub

Sub timer_Tick() ...
    timer.Enabled = False
    call BuscarLoQueSea
fin sub


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.176



Ver Perfil
Re: busqueda automática mientras se escribe
« Respuesta #2 en: 21 Octubre 2021, 16:37 pm »

Tengo un text donde el usuario debe ingresar un texto a buscar. Uso timer, el objeto no la función, haciendo que cada vez que el text cambie el intervalo del timer cambie a 2000 milisegundos. pero esto no ocurre. La idea es que el usuario escriba el texto a buscar y una vez que deje de escribir, se realizce la busqueda de forma automática sin que haya la necesidad de un botón para hacerlo. ¿Alguna idea de como hacer esto?

A mí me vale con esto, a no ser que no esté entendiendo bien tu pregunta:

Código
  1. Private Sub Text1_Change()
  2.  Me.Timer1.Enabled = False
  3.  Me.Timer1.Interval = 2000
  4.  Me.Timer1.Enabled = True
  5. End Sub
  6.  
  7. Private Sub Timer1_Timer()
  8.  Call MsgBox("Han pasado 2 segundos")
  9.  Me.Timer1.Enabled = False
  10. End Sub
  11.  

Cada vez que se modifique el contenido del TextBox ya sea porque se pulsó una tecla para escribir algo o se pegó algo o se borró algo se desactiva el Timer, se establece en 2 segundos, u se vuelve a activar, de esta manera se puede reiniciar el contador correctamente.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines