Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Cerrar ventana a los 10 min. de inactividad (https://www.clubdelphi.com/foros/showthread.php?t=22228)

jamonete2 09-06-2005 17:47:45

Cerrar ventana a los 10 min. de inactividad
 
Hola a todos,
tengo un programilla y quiero que si en 10 minutos nadie toca ni el teclado ni el raton se apague. He mirado con el ttimer pero no tiene en cuenta si se mueve el raton.
Tambien me gustaria me comentarais si hay algun componente que muestre en pantalla un teclado, para poder escribir con el raton.
Salu2 a todos

roman 09-06-2005 19:04:50

No sé qué tal funcione pero puedes probar esto.

En el timer comparas la hora actual con la última hora de actividad, Si la diferencias es mayor de la tolerada cierras la ventana.

Por otra parte colocas una componente ApplicationEvents (paleta "Additional") y en su evento OnMessage pones:


Código Delphi [-]
if
  ((Msg.message >= WM_MOUSEFIRST) and (Msg.message <= WM_MOUSELAST))
  or
  (Msg.message >= WM_KEYFIRST) and (Msg.message <= WM_KEYLAST)
then
begin
  (*
    Aquí reinicias la cuenta 
  *)
end;

El condicional te dice si se ha recibido algún mensaje del teclado o del ratón.

La segunda pregunta nada tiene que ver con la primera así que será mejor que abras otro hilo para ella.

// Saludos

jamonete2 09-06-2005 19:28:28

Muchas gracias, aunque veo que me he dejado varios detalles importantes.
Primero uso delphi 4 ya que es el que utilizamos aqui. En este compilador no aparece el Aplication event que me comentas. Se puede bajar como componente para añadir?
El procedimiento que me da la ultima hora de actividad cual es??

roman 09-06-2005 19:42:44

Cita:

Empezado por jamonete2
En este compilador no aparece el Aplication event que me comentas. Se puede bajar como componente para añadir?

No es necesario. A falta de la componente declara el siguiente método en la clase de tu formulario:

Código Delphi [-]
type
  TForm1 = class(TForm)
  private
    procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
  end;

Y en el constructor del formualrio pones:

Application.OnMessage := AppMessage

En la implementación de AppMessage pones lo que iba en el evento.

Cita:

Empezado por jamonete2
El procedimiento que me da la ultima hora de actividad cual es??

No es un procedimiento. Usa una variable global en donde guardes la hora actual. Esta variable la inicializas en el constructor del formulario con la función Time() y la actualizas cada vez que recibas un evento del teclado o del ratón (método AppMessage).

// Saludos

jamonete2 10-06-2005 18:18:53

Muchas gracias roman. Probare esto que hasta ahora no he podido.
Espero no postear mas que para decir que va perfecto.


La franja horaria es GMT +2. Ahora son las 01:01:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi