Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: pedroesca en Junio 30, 2011, 09:29:27 am

Título: Procedimiento para automatizar eventos
Publicado por: pedroesca en Junio 30, 2011, 09:29:27 am
Buenos días! necesitaría saber si es factible (posible, viable, etc.), generar un procedimiento, rutina y/o función que "recorra" los eventos de un determinado control, y al dispararse dicho evento, se ejecute dicha rutina. Por ejemplo (porque ni yo entendí lo que escribí arriba), quiero efectuar determinada tarea al producirse el "Got_Focus" de los textbox's de cierto formulario, es decir, para no tener que escribir las líneas en cada gotfocus de cada textbox. Se entiende??? espero que si. Saludos.
Título: Re:Procedimiento para automatizar eventos
Publicado por: raul338 en Junio 30, 2011, 11:31:28 am
Mm... puedes subclasearlo (que seria medio largo xD) y cuando recibas WM_SETFOCUS ahi ejecutas, pero eso si, no estan TODOS los eventos con el mismo nombre :P

O sino puedes crear array de controles :D que puede ser mas facil y achica el codigo
Título: Re:Procedimiento para automatizar eventos
Publicado por: YAcosta en Junio 30, 2011, 11:36:09 am
En ese caso, estas asumiendo que tendras el mismo procedimiento en cada control, por ejemplo las acciones que realices en el Gotfocus de cada textbox seran las mismas en todos los textbos. En ese caso:
Opcion 1: Has una matriz de controles, incluso aqui puedes usar condicionales para ciertas variaciones de la funcion.
Opcion 2: Haste un control de usuario donde las acciones del Gotfocus ya se estuvieran realizando, esta forma me gusta mas porque puedes reutilizar el control en otros proyectos.

Título: Re:Procedimiento para automatizar eventos
Publicado por: raul338 en Junio 30, 2011, 11:55:43 am
Y falto la manera mas sucia (?), en cada TextBox_GotFocus llamas a un sub xD
Título: Re:Procedimiento para automatizar eventos
Publicado por: pedroesca en Junio 30, 2011, 12:32:36 pm
Gracias a todos ! y si, coincido totalmente con YAcosta, llegué a esa misma conclusión, es mas ya estoy finalizando el "Mini" usercontrol, creo es lo mas acertado para no hacer el "trabajo sucio", pues me he cansado de ello (varios años haciendo eso :( )
Título: Re:Procedimiento para automatizar eventos
Publicado por: _katze_ en Junio 30, 2011, 01:07:12 pm
lo q podrias hacer o x lo menos en .net lo ago asi es crear el evento got focus y ago un addhandler de dicho evento creado donde dentro esta lo q necesito .... recorro los textbox y les agrego a todo
Título: Re:Procedimiento para automatizar eventos
Publicado por: seba123neo en Junio 30, 2011, 11:27:46 pm
en .NET no hace falta addhandler para hacer eso, podes crear una funcion a la cual le podes poner que accedan varios controles a la vez. algo asi:

Código: [Seleccionar]
    Private Sub ColorFocoTextbox(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtID.LostFocus, txtNombre.LostFocus, txtCarpetaEntrada.LostFocus, txtCarpetaSalida.LostFocus, txtCadena.LostFocus
        sender.BackColor = Color.White
    End Sub

este ejemplo pone el backcolor en blanco cuando todos esos controles ejecutan el evento LostFocus, creo que la mejor solucion y mas simple en VB6, es una matrix de controles, como ya te dijeron.

saludos.
Título: Re:Procedimiento para automatizar eventos
Publicado por: _katze_ en Junio 30, 2011, 11:43:26 pm
si seba tienes razon pero es viable las dos aunq la q pusiste es mas simple y da lo mismo ! gracias por el aporte
Título: Re:Procedimiento para automatizar eventos
Publicado por: cobein en Julio 01, 2011, 07:34:14 am
La manera mas simple es poner un HOOK e interceptar el cambio de foco globalmente y desde ahi ver que clase de control es y proceder. Arme un ejemplo que hacia justamente lo que piden pero lamentablemente no esta en mi pagina y no se si lo puse en algun lado... me parece que se lo di a Ivo ... buenla cuestion es que no tengo ni VB6 en este momento pero esa opcion son 20 lineas maximo.
Título: Re:Procedimiento para automatizar eventos
Publicado por: pedroesca en Julio 01, 2011, 12:02:48 pm
Gracias Cobein, pero no tengo fucking idea de como hacer un Hook, por el momento lo resolví  con un user control.