Page 1 of 1

ayuda con inkey()

Posted: Thu Aug 03, 2006 8:58 pm
by Gerardo Farfan
resulta que en clipper (modo DOS) me funciona el siguiente ejemplo:

proceso:=iif(inkey(5)=171,"A","B")

pero en fivewin siempre me manda a "B".

esto lo uso cuando, desde el menu se selecciona x opcion y espera 5 seg a que se precione ALT+171, para hacer x o si no se presiona nada haga y , pero no me da el mismo resultado que clipper puro.

por su ayuda muchas gracias.

Posted: Fri Aug 18, 2006 9:19 pm
by Antonio Linares
Gerardo,

Inkey() no se usa en FiveWin.

Abres una ventana desde esa opción del menú ? O una caja de diálogo ?

Posted: Fri Aug 18, 2006 10:14 pm
by Gerardo Farfan
Antonio:

Efectivamente, abro desde una opcion del menu un dialogo con cierta informacion dependiendo si el usuario presiono Alt+171, de lo contrario muestro otro tipo de informacion.


gracias.

Posted: Sat Aug 19, 2006 12:24 am
by Antonio Linares
Gerardo,

Le has asignado el acelerador Alt+171 ( ½ ) a una opción del menú ?

Como lo pulsa el usuario ?

Posted: Mon Aug 21, 2006 8:35 pm
by Gerardo Farfan
el usuario lo usa asi

entra a la opcion del menu de ventas (por decir algo) y a la opcion ventas,
aqui espera 5 seg. a que el usuario presione Alt+171 para que haga una remision (y no calcule impuestos), si el usuario no tecleo nada, entonces se hara una factura (calculando sus respectivos impuestos).

puedo mandarte a tu correo privado el porque necesito esto???

de antemano muchas gracias

Posted: Mon Aug 21, 2006 8:40 pm
by Antonio Linares
Gerardo,

Y no es más simple preguntarle directamente ?

Code: Select all

If MsgYesNo( "¿ Quiere factura ?" ) 
   ...
else
   ...
endif

Posted: Tue Aug 22, 2006 4:41 pm
by manuramos
Gerardo, porqué no sustituyes la opción de ventas por dos:

- OPCION DE VENTA SIN CALCULO DE IMPUESTO
- OPCION DE VENTAS CON CALCULO DE IMPUESTO.

O el título que tu veas. Es que en Windows el evento de captura del teclado no se gestiona como se hacía en MS-DOS. Supongo que habrás un buffer intermedio de teclado, pero ten en cuanta que en Windows, el fluo del programa no se detiene en un punto concreto del código fuente, entonces ¿dónde le ordenarías al programa que revise el teclado?

Se me ocurre que quizá podría utlilizar esto al principio del módulo (primer códio tras pulsar la opción):

SysWait( 50 )
IF GetKeyState( VK_CONTROL )
...
PROCESO PREPARATORIO CALCULO DE IMPUESTOS
...
ENDIF

Si el usuario pulsó "CONTROL" al entrar en el módulo de ventas, se bifurcaría por ahí.


Si quieres controlar ALT+171, tendrás que systutiuir GetKeyState( VK_CONTROL ) por GetKeyState( valor de la tecla ALT+171 )

Un saludo.