FoxPro/Visual FoxPro - Pérdida de enfoque en los controles

 
Vista:

Pérdida de enfoque en los controles

Publicado por Jose Andres Solís Molina (3 intervenciones) el 20/04/2011 16:43:29
Saludos, mi pregunta es con respecto a la pérdida del enfoque en los controles de un formulario. Por ejemplo, tengo unos campos de texto en un formulario, si el usuario deja precionada las teclas de dirección izquierda o derecha, el cursor en dicho campo llega hasta el final y luego se sale del control. Quisiera saber si hay alguna forma de que el control pierda el enfoque solo cuando el usuario presione la tecla Enter o la tecla TAB. Pienso que debe existir alguna propiedad genérica, ya que esto es algo que viene por defecto en otros lenguajes y bueno, sería un poco tedioso tener que ir a todos los controles a cambiarles a cada uno una propiedad en particular para obtener este resultado

Gracias por la ayuda que me puedan brindar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Pérdida de enfoque en los controles

Publicado por bastidasf (10 intervenciones) el 04/05/2011 19:50:55
SET CONFIRM ON
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pérdida de enfoque en los controles

Publicado por xx (378 intervenciones) el 20/04/2011 17:36:40
No es que sale de control, va a otros controles que no muestran cuando tienen el foco por ejemplo label, shape etc.

Lo que debes hacer para que esto no suceda es deshabilitar todos los controles que no utilizas en ese momento por ejemplo si tienes cuadros de label, shape y otros deshabilitalos (esto es la propiedad enabled=.F.) y veras que cuando el usuario pulsa tab o flechas y llega al ultimo pasara al primer control habilitado

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pérdida de enfoque en los controles

Publicado por Jose Solis Molina (3 intervenciones) el 20/04/2011 17:47:32
En realidad eso es lo que quiero evitar, aunque los demás controles como label, etc. estén deshabilitados, hay una situación muy incómoda, por dar un solo ejemplo, que puede suceder:

el usuario está escribiendo en un textbox, por ejemplo una dirección, y por error se equivoca y preciosa la tecla de borrado que está encima del enter, está tecla empieza a borrar y si el usuario la deja precionada se va a hasta el inicio del control y no se detiene ahí, se pasa al anterior control y si este tiene algo escrito, igual sigue borrando, lo cual no es nada práctico y confunde al usuario por completo. Acá lo que debería suceder es que si el usuario deja dicha tecla presionada, se debería de borrar lo que tiene ese textbox en particular y cuando llega al inicio del mismo no tiene que pasarse a otro control, simplemente se queda el cursor al inicio del control, si el usuario quiere cambiarse de control debe hacerlo con la tecla enter, el tab o con el mismo mouse, así funcionar en todos los demás controles generados por otras herramientas visuales.

espero haberme explicado mejor, ya que realmente requiero corregir esto, tengo un programa muy grande hecho en Visual Fox 6.0 y necesito corregir esta situación, ya que todos mis clientes coinciden en que esto no debería de ser así.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pérdida de enfoque en los controles

Publicado por xx (378 intervenciones) el 20/04/2011 19:01:37
En efecto logre reproducir el error, probe la propiedad TerminateRead y no corrige el error, asi que lo unico que te resta para rectificar esto es que escribas un codigo en evento valid() del textbox y que impida su validación cuando el campo esta vacio, con la complicación que deberias verificar bien el modo en que el usuario cancela la operacion o transaccion en curso (es decir cierra el formulario)

algo asi seria el codigo del THISFORM.TEXT1.VALID()
*//CIERRE FORZADO O WM_CLOSE
IF LASTKEY()==27 OR THISFORM.RELEASETYPE>0
RETURN .T.
ENDIF
IF EMPTY(THIS.VALUE) &&en caso de ser string y THIS.VALUE==0 en caso de ser numerico el text1
RETURN .F.
ENDIF

Saludos y comenta como te fue
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar