Clipper/FiveWin - Temporizar un Get .. Read

 
Vista:

Temporizar un Get .. Read

Publicado por Santiago (2 intervenciones) el 27/09/2006 19:47:12
Hola a todos los foreros de esta sección de Clipper.
Yo tengo de hace unos años un pequeño programa que entre otras cosas, controla la introducción de datos con un campo de texto y lo envía posteriormente a una tabla, pero ahora me surge la necesidad de poder cerrar el programa automáticamente cuando deja de utilizarse durante un tiempo.

Hasta ahora viene a ser algo así como sigue:

Function CapturaDatos()
While !(LastKey() == 27)
@ 5,21 Say "Introduce el dato"
@ 6,30 Get cCampo
@ 10,23 Say "Pulsa la tecla Esc para terminar"
Read
Enddo
Otro código posterior....xxxx..
Return Nil

He probado utilizando diferentes funciones pero no lo consigo, por eso pido ayuda para ver si alguien puede indicarme con algún pequeño ejemplo o de cualquier otra manera como conseguir mi propósito. Dicho de otro modo terminar con la edición del Get...Read.

Sin otro particular y en espera de que algún amable lector pueda interesarse en el tema, un saludo a todos.

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

RE:Temporizar un Get .. Read

Publicado por Gabriel pascual (913 intervenciones) el 28/09/2006 02:56:48
Hace muuuuucho que no programo con Clipper pero esta si me la se perfectamente.

Como muchos de los comandos, el comando READ de Clipper no existe, es una llamada a una funcion llamada READMODAL() cuyo codigo fuente esta incluido en la carpeta source debajo de la caperta Clipper5.

El ReadModal() lo que hace es hacer un bucle (Do while .t.) en donde procesa todos los eventos de pulso de teclado y los va enviando a los respectivos GETS que tenga tu pantalla de captura, el ReadModal() recibe como parametro un array de objetos GET llamado aGets, a partir de ahi, el ReadModal() hace la labor de "lectura" de teclas pulsadas y de los saltos entre campo y campo.

Todo el proceso de captura de GETs es controlado por la funcion ReadModal() que esta escrtia 100% en Clipper.

Lo que tuienes que hacer, es construirte TU PROPIA ReadModal(), esto es muy facil, simplmente tomas el codigo original de la ReadModal() de Clipper, y agregas las lineas para el temporizador, quedaria algo como esto en pseudocodigo:

Entrar a la funcion readmodal
leer en una variable el valor de la fucnion nSecs := SECONDS()
Entrar al bucle de eventos
en cada vuelta del bucle de eventos mirar si el valor actual de SECONDS es mayor en ... digamos 1 minuto, si si lo es, salir del bucle y cerrar el programa.
En cada pulso de tecla, resetear el nSecs, asignandolo a la funcion SECONDS

Y listo, este truco es valido para hacer muchas cosas con el get, por ejemplo hacer que fucnione con el mouse, mandar pusos de teclas, hacer gets "calculados" etc.
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:Temporizar un Get .. Read

Publicado por Santiago (2 intervenciones) el 28/09/2006 20:54:25
Muchas gracias por tu respuesta amigo Gabriel.
He leido y probado tu idea, pero no consigo dar con el código correcto para el desarrollo de esta estructura.
Te ruego si eres tan amable y dispones de un momento, te extiendas un poco en explicar tu código, o me indiques dónde puedo obtener algo más de información sobre este tema.

Muchas gracias.
Santia.
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