Controle de Inatividade
Olá pessoal, estou precisando fechar o sistema por inatividade( falta de uso ).
Alguem tem algum idéia ?
Obrigado.
Marcelo
Curtidas 0
Respostas
Wilson Junior
15/10/2010
O que você considera inatividade? Explique melhor.
GOSTEI 0
Marcelo
15/10/2010
Sim, me desculpe por não ter me explicado melhor.....
O usuário abre o sistema e fica sem operá-lo por varias horas eu queria colocar um time, após 10 minutos sem fazer nada o sistema o mesmo expira e fecha automaticamente.
Muito obrigado...
GOSTEI 0
Emerson Nascimento
15/10/2010
creio ser possível usando os eventos OnIdle e OnMessage da aplicação.
tente colocando estes procedimentos no seu form principal:
procedure TForm14.FormCreate(Sender: TObject);
begin
Application.OnIdle := LigaTimer;
Application.OnMessage := DesligaTimer;
end;
procedure TForm14.LigaTimer(Sender: TObject; var Done: Boolean); // liga o timer ao ficar ocioso
begin
Timer1.Enabled := True;
end;
procedure TForm14.DesligaTimer(var MSG: tagMSG; var Handled: Boolean); // desliga o timer ao entrar em atividade
begin
Timer1.Enabled := False;
end;
procedure TForm14.Timer1Timer(Sender: TObject); // ao executar o timer, depois do tempo informado
begin
// Aqui você executa a ação cabível. no meu caso apenas alterei um label.
Label1.Caption := SysUtils.TimeToStr(SysUtils.Now());
end;
no meu exemplo coloquei 10 segundos no timer (timer.interval = 10000).
veja se isso funciona.
tente colocando estes procedimentos no seu form principal:
procedure TForm14.FormCreate(Sender: TObject);
begin
Application.OnIdle := LigaTimer;
Application.OnMessage := DesligaTimer;
end;
procedure TForm14.LigaTimer(Sender: TObject; var Done: Boolean); // liga o timer ao ficar ocioso
begin
Timer1.Enabled := True;
end;
procedure TForm14.DesligaTimer(var MSG: tagMSG; var Handled: Boolean); // desliga o timer ao entrar em atividade
begin
Timer1.Enabled := False;
end;
procedure TForm14.Timer1Timer(Sender: TObject); // ao executar o timer, depois do tempo informado
begin
// Aqui você executa a ação cabível. no meu caso apenas alterei um label.
Label1.Caption := SysUtils.TimeToStr(SysUtils.Now());
end;
no meu exemplo coloquei 10 segundos no timer (timer.interval = 10000).
veja se isso funciona.
GOSTEI 0
Wilson Junior
15/10/2010
Marcelo, não precisa se desculpar, apenas solicitei mais esclarecimentos para poder lhe ajudar da melhor forma.
Bom, o Emerson já postou uma boa solução.
Qyualquer coisa é só perguntar.
Bom, o Emerson já postou uma boa solução.
Qyualquer coisa é só perguntar.
GOSTEI 0
Marcelo
15/10/2010
Tem que declarar alguma coisa em USES ??
GOSTEI 0
Leonardo Xavier
15/10/2010
Não você nao precisa declarar nada no exemplo acima você apenas coloca um timer em seu formulário e coloca o código qua te foi passado. e com certeza seu problema será resolvido.
GOSTEI 0