evento gotfocus no se ejecuta tras evento lostfocus
Publicado por nsut (28 intervenciones) el 21/09/2017 21:29:55
Hola a todos,
Cuento primero lo que pretendo hacer, luego cómo lo pretendía hacer y luego mi problema.
Lo que pretendo hacer:
Tengo un formulario continuo donde quiero comprobar si ha habido alguna modificación en el valor de un cuadro de texto del formulario.
Cómo lo pretendía hacer:
1. Asigno al cuadro de texto un evento de GOTFOCUS para que cuando el usuario se posicione sobre él se almacene su valor en una variable public.
2. También asigno al mismo cuadro de texto un evento de LOSTFOCUS para que cuando el usuario lo abandone se compare el valor en ese instante con el valor que tenía cuando el usuario se posicionó en él (Almacenado en la variable public comentada anteriormente).
3. Comparo con un IF los dos valores, el menos reciente y el actual. Si son diferentes, ha habido alguna modificación y se ejecuta un determinado proceso que no viene al caso. Si son iguales, no ha habido ninguna modificación y no se realiza nada.
Mi problema:
Si el usuario (una vez que se ha posicionado en el cuadro de texto que contiene los eventos GOTFOCUS y LOSTFOCUS) se posiciona en otro cuadro de texto, el procedimiento funciona bien. En cambio, si el usuario se posiciona en otro registro del mismo cuadro de texto (recuerdo que es un formulario continuo) sólo se ejecuta el evento LOSTFOCUS y NO el GOTFOCUS+LOSTFOCUS del nuevo registro.
¿A alguien se le ocurre alguna solución? Sólo se me ocurre establecer un SETFOCUS en cualquier otro cuadro de texto al final del procedimiento Sub LOSTFOCUS pero no me gusta porque puede confundir al usuario. (El usuario vería que cuando baja de registro en un mismo "campo" representado por cuadro de texto, el cursor se posicionaría en otro lado)
Muchas gracias de antemano por vuestro tiempo y disculpad la extensión del mensaje, quería explicarme lo mejor posible.
Cuento primero lo que pretendo hacer, luego cómo lo pretendía hacer y luego mi problema.
Lo que pretendo hacer:
Tengo un formulario continuo donde quiero comprobar si ha habido alguna modificación en el valor de un cuadro de texto del formulario.
Cómo lo pretendía hacer:
1. Asigno al cuadro de texto un evento de GOTFOCUS para que cuando el usuario se posicione sobre él se almacene su valor en una variable public.
2. También asigno al mismo cuadro de texto un evento de LOSTFOCUS para que cuando el usuario lo abandone se compare el valor en ese instante con el valor que tenía cuando el usuario se posicionó en él (Almacenado en la variable public comentada anteriormente).
3. Comparo con un IF los dos valores, el menos reciente y el actual. Si son diferentes, ha habido alguna modificación y se ejecuta un determinado proceso que no viene al caso. Si son iguales, no ha habido ninguna modificación y no se realiza nada.
Mi problema:
Si el usuario (una vez que se ha posicionado en el cuadro de texto que contiene los eventos GOTFOCUS y LOSTFOCUS) se posiciona en otro cuadro de texto, el procedimiento funciona bien. En cambio, si el usuario se posiciona en otro registro del mismo cuadro de texto (recuerdo que es un formulario continuo) sólo se ejecuta el evento LOSTFOCUS y NO el GOTFOCUS+LOSTFOCUS del nuevo registro.
¿A alguien se le ocurre alguna solución? Sólo se me ocurre establecer un SETFOCUS en cualquier otro cuadro de texto al final del procedimiento Sub LOSTFOCUS pero no me gusta porque puede confundir al usuario. (El usuario vería que cuando baja de registro en un mismo "campo" representado por cuadro de texto, el cursor se posicionaría en otro lado)
Muchas gracias de antemano por vuestro tiempo y disculpad la extensión del mensaje, quería explicarme lo mejor posible.
Valora esta pregunta


0