FoxPro/Visual FoxPro - Help 2: Encontré un algo "ilógico" en el TEXTBOX

 
Vista:

Help 2: Encontré un algo "ilógico" en el TEXTBOX

Publicado por Andrea (325 intervenciones) el 10/02/2009 23:16:51
Hola a todos

Refloté el post de esta tarde para que los tengan "cerca".
Gracias a los que contestaron pero todavía el error sigue.

En realidad, es como si ninguna instrucción de borrado del buffer del teclado funcionara.

Por ejemplo: en el evento KEYPRESS de un TEXTBOX de OTRO formulario, tengo el siguiente código

DO CASE
CASE nKeyCode = 27 &&Esc
_____thisform.release
ENDCASE

Como seguía ejecutándose el código 27 (ESC) y no paraba, puse lo siguiente (LE AGREGUÉ TODAS LAS LIMPIEZAS....JA JA JA)

DO CASE
CASE nKeyCode = 27 &&Esc
_____CLEAR TYPEAHEAd
_____NODEFAULT
_____KEYBOARD "" CLEAR
_____thisform.release
ENDCASE

Pero aunque parezca mentira, el código 27 (Esc) SEGUÍA aunque supuestamente ya había borrado el buffer!!!

Para comprobarlo agregué varios WAIT WINDOWS con el siguiente código
DO CASE
CASE nKeyCode = 27 &&Esc
_____WAIT WINDOW STR(LASTKEY()) TIMEOUT 2
_____CLEAR TYPEAHEAd
_____WAIT WINDOW STR(LASTKEY())+"1" TIMEOUT 2
_____NODEFAULT
_____WAIT WINDOW STR(LASTKEY())+"2" TIMEOUT 2
_____KEYBOARD " " CLEAR
_____WAIT WINDOW STR(LASTKEY())+"3" TIMEOUT 2
_____thisform.release
ENDCASE

En todos los casos el LASTKEY( )me mostró 27!!!! , es decir que el buffer del teclado no se borra...

¿QUE PUEDE SER? ¿QUE ME ESTOY OLVIDANDO DE CONFIGURAR??
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
sin imagen de perfil

RE:Help 2: Encontré un algo

Publicado por Ernesto Hernandez (4623 intervenciones) el 10/02/2009 23:22:39
que paso ? no te sirvio el ejemplito que te mande ???
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

RE:Help 2: Encontré un algo

Publicado por Andrea (325 intervenciones) el 11/02/2009 00:43:29
Hola enrique... No recibí nada y te envié otra dirección en privado.

De todas maneras, si bien el problema creo que se relaciona con el otro, acá la situación es similar y no encuentro la forma de blanquear el buffer del teclado cuando se presiona Esc
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
sin imagen de perfil
Val: 4
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:Help 2: Encontré un algo

Publicado por kong (682 intervenciones) el 11/02/2009 02:58:44
y si le quitas el

thisform.release del TEXT1, que pasaria..... solo prueba alli.

..................

y luego prueba lo siguiente.

. ponga en las propiedades del form KEYPREVIEW=.t.
. create una variable publica o crea una propiedad, que sirve para asignar el estado del focus. y eso lo utilizas en el Gotfocus de cada TEXT (ej. tieneelfoco=1)
. en el KEYPRESS del form pones las instrucciones para seguir o abandonar la form. Podrias usar un DO CASE ENDCASE

(la instruccion thisform.realease del TEXT1 se deberia de borrarse)

...................
haber, te la mastico un poco mas.
...................

. borrar la instruccion thisform.release del TEXT1, y de todos los objetos excepto las que deban contenerla (pj. fin de factura, salir,etc)
. en el INIT de la form ponga
thisform.addproperty("tieneelfoco")
thisform.tieneelfoco=0
. ponga en la propiedad del form KEYPREVIEW=.T.
. ponga en el GOTFOCUS del text1
thisform.tieneelfoco=1
. en el GOTFOCUS del text2
thisform.tieneelfoco=2
. en el LOSTFOCUS del text1 y del text2
thisform.tieneelfoco=0
. en el KEYPRESS del form .... recuerda del FORM
do case
----case nKeyCode=27 and thisform.tieneelfoco=1
--------thisform.release
----case nKeyCode=27 and thisform.tieneelfoco=2
--------aqui el mensaje
--------if respuesta=6
------------thisform.realease
------------else
------------nodefault
------------thisform.text1.setfocus
--------endif
endcase

************** si no das con esta forma, me rindo****************
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
Imágen de perfil de Mauricio
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Help 2: Encontré un algo

Publicado por Mauricio (1541 intervenciones) el 11/02/2009 03:00:23
Andrea puedes probar esto?
IF nKeyCode = 27 &&Esc
PUSH KEY CLEAR
_____thisform.release
ENDIF
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

RE:Help 2: Encontré un algo

Publicado por ANDRES CORTEZ M (162 intervenciones) el 11/02/2009 09:08:10
HOLA ANDREITA

Con tantos cambios ya perdiste el norte.

Respira tranquila y empieza por descarte.

Ejemplo

.- crea un text nuevo en el coloca en el evento keypres

LPARAMETERS nKeyCode, nShiftAltCtrl
IF nkeycode=27
rta=MESSAGEBOX("¿Desea salir de esta factura?",4+32+0,"Presionó ESC")
IF rta=6 &&si
thisform.text1.setfocus
ENDIF
endif

y nada mas

-Del text1 manda el foco a este nuevo text, Ejecuta si al darle escape
funciona bien, el problema lo tienes en el text2, si no funciona el problema esta en el text1

de ser asi

1- Verifica que en la propiedad del FORMULARIO KEYPRES no este validando la tecla escape, que creo que pueda ser lo mas probable
2- verifique las otras propiedades gotfocus,when, valid que no agan referencia a la tecla escape
3.- Veifica que no tengas por alli un keyboard{"esc"} que hace la simulacion de esc como si se pulsara 2 veces.

si es en text2 lo mismo

Espero te sirva, por lo menos sabras donde analizar

ACM.
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

Gracias a todos!!!

Publicado por Andrea (325 intervenciones) el 11/02/2009 17:11:23
Hola a todos.

Tomando las sugerencias de cada uno, finalmente pude solucionar los 2 problemas: lo del Text1 y Text2 que salía del formulario y lo del formulario que traía el LASTKEY( )=27 (Esc) y lo arrastraba.

En el primer caso, finalmente utilicé el Keypreview y armé un solo Keypress para el caso que se presione Esc en alguna de las partes. En este caso NODEFAULT no funcionó, así que solamente dejé un THISFORM.RELEASE en el Keypress del FORM.

En el otro caso, de la llamada a otro formulario, ahí SI funcionó NODEFAULT

A Kong le digo en el Keypress general, en vez de usar una bandera, utilicé la propiedad "Activecontrol" y funciona igual.

Gracias a Ernesto, Kong, Mauricio, Andrés y TODOS LOS QUE ME AYUDARON!!!

Andy
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