Omitir un evento de un textbox cuando oprimo un boton.

122 views
Skip to first unread message

Oscar Quiros Coto

unread,
Mar 15, 2016, 9:15:08 PM3/15/16
to Comunidad de Visual Foxpro en Español
Buenas noches.
Amigos, estoy mejorando mis sistemas para utilizar con monitor tactil y/o tableta, de momento tengo el inconveniente que cuanto oprimo el boton que equivale a 'ESC', se ejecutan los eventos relacionados al textbox donde estoy ubicado, como el valid(), lostfocus().
Como puedo hacer que dicho boton tenga prioridad sobre estos eventos.

Creo que ya existe un tema al respecto, pero no lo encuentro.

Saludos.

Víctor Hugo Espínola Domínguez

unread,
Mar 15, 2016, 9:32:44 PM3/15/16
to publice...@googlegroups.com
IF LASTEKEY() = 27
    RETURN
ENDIF


Saludos,
Víctor.
Lambaré - Paraguay.

Oscar Quiros Coto

unread,
Mar 15, 2016, 9:50:59 PM3/15/16
to publice...@googlegroups.com

Gracias por responder, pero creo que no me di a entender.

Imagina una forma, el foco está en el text1 esperando enter o escape, pero como no tengo teclado, existe un botón que equivale a escape, pero hay que darle click, u oprimirlo que es lo mismo, en el momento de dar click, de inmediato se ejecuta el valid() y/o lostfocus() del text1, y es lo que no quiero, es decir, de alguna manera dar prioridad al click del botón, ya que el escape me saca del form, ya que en el keypress del form tengo:

if 27=nKeyCode

   thisform.release

endif

Teniendo en cuenta, que hasta salir de la forma, evalúo el lastkey(), recuerda que estoy ‘parchando’ para tratar de que la aplicación sea mas amigable con un dispositivo móvil.

Saludos.

 

 

 

 

Soporte y Sistemas OQC, S.A.

Partner Autorizado de ESET en Costa Rica

Cel:(506) 87 11 00 11 

Email: os...@ssoqc.com - oscarqu...@hotmail.com

Skype: oscar.quiros.coto

Message has been deleted

Idalberto Gonzalez

unread,
Mar 15, 2016, 10:13:08 PM3/15/16
to Comunidad de Visual Foxpro en Español

En el evento valid() y lostfocus() del text1:


if !empty(this.value)


   el codigo que desees


endif


&&.- Hasta aqui el text1




&&.- En el keypress del form


if 27=nKeyCode

thisform.text1.value=""

   thisform.release

endif

Víctor Hugo Espínola Domínguez

unread,
Mar 15, 2016, 10:27:06 PM3/15/16
to publice...@googlegroups.com
En el evento VALID


IF LASTEKEY() = 27
    RETURN
ENDIF

*--- Resto de la validación

Igual en el evento LOSTFOCUS

IF LASTEKEY() = 27
    RETURN
ENDIF

*--- Resto del código del evento


Saludos,
Víctor.
Lambaré - Paraguay.


Carlos Miguel FARIAS

unread,
Mar 16, 2016, 7:36:08 AM3/16/16
to Grupo Fox
Tal como dice Oscar, no le han entendido bien lo que solicita, y no se si la solución de Idalberto lo complete.
El control que oficia de Esc, no produce naturalmente el KEYBOARD ESC, por lo que analizar lastkey() en ningún lado dará resultado.
Tampoco la solución de Idalberto pareciera que pudiera resultar, porque el usuario puede haber cargado algo el campo y decide cancelar, entonces, chequear que esté en blanco no daría resultado.
No me queda claro como el usuario está ingresando los datos en el monitor touchscreen (tiene un teclado gráfico?, en pantalla, usa un teclado adosado?, ambos?)

Se me ocurre que una solución sería que en el evento doubleclick del textbox, se invoque el evento click del elemento visual que emula la tecla esc.
Al usuario, se le puede indicar que si quiere cancelar, haga doble click sobre el control actual (sería tocar dos veces rápidamente en sucesión sobre dicho control) si es que el touchscreen logra detectar tal evento.
Otra solución sería que en el evento keypress del control, detectes algún tipo de caracter "anómalo" para el dato que se ingresa en el textbox y ese caracter se interprete como ESC.

Evidentemente, la modalidad touchscreen que se esta popularizando, y que bajo ciertas circunstancias de trabajo, son a mi entender "una porquería".
Imaginen un touchscreen en un dispositivo donde el operador tenga las manos "sucias, mojadas, con guantes gruesos, o que no pueda mirar el touchscreen". En esas situaciones, el teclado gráfico no provee un feedback táctil apropiado al operador.

Por ejemplo, utilizo un smartfone cuando salgo a caminar para marcar los tiempos parciales y/o totales por cada tramo de recorrido. Con un teclado físico, simplemente pulso una tecla "destacada" (fácil de ubicar con los dedos, y protegida de pulsaciones involuntarias) y registro la marca (no necesito siquiera mirar el dispositivo).
Con un teclado touchscreen, tengo que activar el teclado (si lo dejo activado, cualquier rose en el bolsillo dispara alguna acción inapropiada), luego de activar, tengo que desbloquear, y si o si mirar la pantalla para ubicar la tecla "dibujada" que corresponda a la función deseada (y debo mirar, porque los smartfones, pueden cambiar la pantalla activa por su propio funcionamiento, y no dejar en primer plano la aplicación cronometro en mi caso).
Algo parecido pasa con los dataentry, ellos miran el documento que tiene que cargar, no miran el teclado físico, porque esté tiene marcas táctiles que les permite ubicar las manos (tocar letras F, J y el 5 del pad numérico). Si usan un touchscreen, tienen que reubicar las manos, mirando la pantalla (pierden de vista el documento), no lo veo ágil.
Con esto, no quiero decir que rechazo el touchscreen, en muchas situaciones puede ser de mucha utilidad, a mi modo de ver, un touchscreen reemplaza al mouse, en forma mucho más intuitiva, pero no lo veo en general como una panacea para reemplazar un teclado, al menos, cuando este se usa para entrar muchos datos.
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los acompañe a tomar la sopa con el plato encima del martillo neumático, ENCENDIDO ;-D

Fernando D. Bozzo

unread,
Mar 16, 2016, 7:56:05 AM3/16/16
to Comunidad de Visual Foxpro en Español
Hola Oscar:

A veces se pretende resolver con eventos y código lo que se debería resolver con diseño.

Creo que te podría servir leer esto y por ahí te da algunas ideas de implementación:

VFP: La interfaz, las reglas de negocio y los Datos - Cómo separarlos y por qué


Saludos.-

Carlos Miguel FARIAS

unread,
Mar 16, 2016, 8:01:53 AM3/16/16
to Grupo Fox
Lindo trabajito Fernando.
Eso es programar Clases, con clase
Saludos: Miguel
Reply all
Reply to author
Forward
0 new messages