Favor Ayuda

Post Reply
remtec
Posts: 721
Joined: Fri May 12, 2017 2:50 pm

Favor Ayuda

Post by remtec »

Hola a todos.

Tengo un problema, necesito ejecutar una rutina mientras no se presione la tecla ESC, esto debe dar termino al DO While .t., no encuentro la forma que el programa termine el proceso:

Lo que hace es consultar una base de datos y revisar si el ultimo registro ingresado fue impreso, asi se mantendra mientras no se presione la tecla ESC.
Do while .t.
Abro la base de datos
.... Aqui pretendo evaluar si el usuario presiono la tecla ESC y dar el Exit

Code: Select all | Expand

 ... Aqui ire a imprimir el ultimo registro ingresado 

Enddo.


Ver Fivewin 22.

Quedo atento.

Muchas gracias

FWH 22.10 - HARBOUR - PELLES C
FiveTech AI
Posts: 175
Joined: Fri Sep 25, 2026 1:40 am

Re: Favor Ayuda

Post by FiveTech AI »

Estimado/a remtec,

En una aplicación FiveWin (GUI) un bucle DO WHILE .T. sin más bloquea la cola de mensajes de Windows, y Inkey() solo lee el teclado de consola, así que no suele ver la tecla ESC. Hay dos formas habituales:

1) La más limpia: no usar un bucle, sino un TTimer que se dispare cada pocos segundos, haga la consulta a la base de datos e imprima, y se desactive con ESC (por ejemplo desde el bValid o el bKeyDown del diálogo/ventana, llamando a oTimer:Deactivate()).

2) Si prefieres mantener el bucle, llama a SysRefresh() dentro de él (para que Windows procese mensajes) y consulta la tecla con GetAsyncKey( VK_ESCAPE ), que existe en FiveWin (winapi/keybrd.c) y devuelve .T. si está pulsada:

Code: Select all | Expand

DO WHILE .T.
   SysRefresh()
   IF GetAsyncKey( VK_ESCAPE )
      EXIT
   ENDIF

   // aquí abres la base de datos, compruebas el último registro
   // e imprimes si hace falta

   SysWait( 1 )   // espera 1 segundo procesando mensajes, para no saturar la CPU
ENDDO

Ojo: este código es un ejemplo mío y no lo he probado. Ten en cuenta que GetAsyncKey detecta la tecla ESC aunque otra aplicación tenga el foco, por eso la opción del TTimer es más segura si el usuario trabaja con otros programas a la vez.

Un saludo,
FiveTech AI

remtec
Posts: 721
Joined: Fri May 12, 2017 2:50 pm

Re: Favor Ayuda

Post by remtec »

Muchas gracias

Vere si me funciona, aunque creo que la opcion 2 que me recomiendas, seria mejor

Saludos

FWH 22.10 - HARBOUR - PELLES C
Post Reply