Fórum Tempo ocioso #241770
06/07/2004
0
Por exemplo
Defino que se a aplicação ficar por 60 segundos sem operação de mouse e teclado, ela simplismente irar fechar todos os forms abertos e chamar o formulário de login novamente
Agradeço desde ja
Fknyght
Curtir tópico
+ 0Posts
06/07/2004
Tatuweb
Na clausula private do form de login coloque:
procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
e declare uma variável global como mostrado abaixo:
CloseForm: Word;
No OnShow do form de login coloque
procedure TFormLogin.FormShow(Sender: TObject); begin // Zera o contador CloseForm := 0; //Só habilite o timer aqui Timer1.Enabled := TRUE; // Processa as mensagens enviadas Application.OnMessage := AppMessage; end;
Implemente a procedure AppMessage
procedure TFormLogin.AppMessage(var Msg: TMsg; var Handled: Boolean); begin if FormLogin.Active then begin if (Msg.message = WM_KEYDOWN) or (Msg.message = WM_LBUTTONDOWN) then begin CloseForm := 0; Handled := FALSE; end; end else CloseForm := 0; end;
No evento Timer do componente timer1 coloque o codigo abaixo. Deixe a propriedade Enabled setada para FALSE e a propriedade Interval em 1000.
procedure TFormLogin.Timer1Timer(Sender: TObject); begin Inc (CloseForm); // Defina abaixo o tempo em segundos (ex: 10 seg) if CloseForm = 10 then begin TImer1.Enabled := FALSE; FormLogin.Close; end; end;
No form que chamará o form de login declare a unit do form de login.
uses FrmLogin; begin FormLogin.Show; end;
Gostei + 0
09/07/2004
Fknyght
1 - Qdo trabalho em cima de um TMenu, o código não pega o click do mouse
2 - Não funciona com o botão direto do mouse
3 - Tipo, queria fazer tipo no descansador de tela do windows, se mexer o mouse, reseta a variavel contadora e começa novamente
Grato
Gostei + 0
09/07/2004
Tatuweb
[b:e19b79e1c8]if (Msg.message = WM_KEYDOWN) or (Msg.message = WM_LBUTTONDOWN) then [/b:e19b79e1c8]
para
[b:e19b79e1c8]if (Msg.message = WM_KEYDOWN) or (Msg.message = WM_COMMAND) or (Msg.message = WM_MOUSEMOVE) then [/b:e19b79e1c8]
Considerações: Com essa alteração a rotina deixa de processar as mensgens envidas com o click do mouse (nem direito, nem esquerdo). Fiz isso para evitar um processamento redundante, já que para clicar o usuário tem que primeiro mover o mouse.
Caso vc queira processar as mensagens de click do mouse é só modificar a rotina adicionando as mensagens WM_LBUTTONDOWN (clique com o botão esquerdo) e WM_RBUTTONDOWN (clique com o botão direito).
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)