Tienes razon, es mas complicado de lo que parece a primera vista.
He estado leyendo un poco del API de Windows y existe una funcion llamada
GetMesage que lo que hace es recuperar un mensaje de la lista de mensajes.
Por otro lado cuando se pulsa una tecla se coloca un mensaje WM_KEYDOW y
cuando se mueve el raton otro de tipo WM_MOUSEMOVE. (Esto lo he sacado de un
fichero que me baje de internet llamado "WinAPI5n.pdf")
Sin tener nada claro como se gestiona eso, creo que la solucion pasara por
llamar (no se como) a la funcion GetMessage y evaluar si en la lista hay uno
de tipo WM_KEYDOW (el usuario habra tecleado algo) o WM_MOUSEMOVE (el
usuario habra movido el raton) y en ese salir del timer sin hacer nada. Si
no hay un mensaje de ninguno de estos 2 tipos, lanzar el Form que desees
presentar.
De todos modos esto lo tiene que corroborar alguien que de verdad entienda
del API de Windows.
"Paco V." <
ssi-estono-@ono.com> escribió en el mensaje
news:4b2ff103$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Ojala fuera tan sencillo.
>
> El tema es como saber que no han realizado ninguna acción, como mover el
> raton, situarse sobre un boton sin pulsar, etc.
> Claro, se podria poner que el timer se reiniciara cada vez que pulso en un
> boton, pero la pantalla tiene como 100 botones distintos y con eventos
> distintos.
> Algo mas general sobre el formulario,......
>
> Gracias por vuestra ayuda.
>
> Paco V
>
> "Mário Angelini" <
mario@emeasoft.com.br> escribió en el mensaje
> news:[email=4b2fd7fa@svctag-j7w3v3j....]4b2fd7fa@svctag-j7w3v3j....[/email]
>> Jesus:
>>
>> Para teste tentei criar o objeto TTimer conforme exemplo abaixo.
>> Mas, dispara o evento apenas uma vez.
>> Como fazer para o temporizador ficar disparando a cada segundo?
>>
>>
>> Para probar he intentado crear el objeto TTimer como el ejemplo a
>> continuación.
>> Pero dispara el evento de una sola vez.
>> ¿Cómo obtener el temporizador de disparo cada segundo?
>>
>>
>> METHOD FormShow( oSender ) CLASS TForm1
>>
>> WITH OBJECT TTimer():Create()
>> :SetInterval(1000)
>> :lEnabled := .T.
>> :OnTimer(::oLabel1:cText:=STR(Seconds()))
>> ::oLabel1:Show()
>> END
>>
>> RETURN Nil
>>
>>
>> Saludos!
>> Mário Angelini
>>
www.eMeAsOfT.com
>>
http://emeasoft.blogspot.com/
>>
http://twitter.com/emeasoft
>>
>>
>>
>
>