Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 05 de Outubro de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
62 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Abrindo a tela de login após um determinado tempo - Parte II
Publicado por ruysalles : Sexta, Abril 08, 2005 - 08:52 GMT-3 (5432 leituras)
Comentários 5 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Administrador Galera, devido a uma falha minha, resolvi postar a segunda parte do artigo Abrindo a tela de login após um determinado tempo, antes do previsto. No evento OnClick do btn_entrar, ficou faltando uma linha de código: Fbol_fecha := true;
Segue abaixo o evento completo:
procedure Tfrm_login.btn_entrarClick(Sender: TObject);
begin
  if edt_login.text = '' then
  begin
    showmessage('Favor informar o nome do usuário do sistema');
    edt_login.setfocus;
    exit;
  end;

  if edt_senha.text = '' then
  begin
    showmessage('Favor informar a senha do usuário do sistema');
    edt_senha.setfocus;
    exit;
  end;

  if (edt_login.text = 'teste') and (edt_senha.Text = 'senha') then
  begin
    Fbol_fecha := true;//Linha que faltou
    Close
  end
  else
  begin
    showmessage('O seu login e/ou senha está(ão) incorreto(s)!');
  end;
end;

Vamos agora passar para a segunda parte do Artigo.

No frm_principal, crie uma variável private do tipo Ttime com nome: Lstr_ultima_acao, esta variável irá armazenar qual foi o horário da última ação do usuário (digitação ou movimentação ou clique do mouse) e outra Ftmr_agora a qual irá armazenar o horário atual.

Depois crie a seguinte procedure:

procedure Tfrm_Principal.controla_mouse_teclado(var Msg: TMsg; var Handled: Boolean);
begin
  //Função que testa se alguma tecla foi digitada
  // ou se o mouse foi movimentado ou pressionado
  If (Msg.message = WM_KEYDOWN) or
    (Msg.message = VK_LBUTTON) or
    (Msg.message = VK_RBUTTON) or
    (Msg.message = VK_MBUTTON) or
    (Msg.message = WM_MOUSEMOVE) then
  begin
    Ftmr_ultima_digitacao := Time;
 end;
end;

No evento OnCreate do frm_principal, coloque o seguinte código:

procedure Tfrm_principal.FormCreate(Sender: TObject);
begin
  Application.OnMessage := controla_mouse_teclado;
  Ftmr_ultima_digitacao := Time;
end;

Adicione um Ttimer ao seu formulário principal e no evento Timer, renomei-o para tmr_tela_login, altere o interval para 100 e adicione o seguinte código:

procedure Tfrm_principal.tmr_loginTimer(Sender: TObject);
begin
  Ftmr_agora := time;
  if (Ftmr_agora - Ftmr_ultima_digitacao) >= strtotime(’03:00:00’) then //A tela de login aparecerá em 03 minutos
  begin
    try
      frm_login := Tfrm_login.Create(Application);
      Application.CreateForm(Tfrm_login, frm_login);
      tmr_tela_login.Enabled := false;//Para o Ttimer
      frm_login.showmodal;//Exibe a tela de login
      frm_login.Destroy;
      frm_login := nil;
      tmr_tel_login.Enabled := true;
    except
      exit;
    end;
  end;
end;

Espero que este artigo seja útil a comunidade do Active Delphi.

Até a próxima,

Ruy Salles
Especialista em Análise de Sistemas


Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: ejmachado488 (mac@gmail.com) : Jun 20, 2006 - 03:58
(Informações sobre o membro | Enviar uma mensagem) http://
Caro Ruy Salles,

Seu código funciona e é muito importante pra segurança dos usuários. Sendo que existem umas informações que estão com falhas, conforme segue abaixo:

PRIMEIRA PARTE

No trecho de código

procedure Tfrm_MenuPrincipal.tmr_tela_loginTimer(Sender: TObject);
begin
Ftmr_agora := Time;
if (Ftmr_agora - Ftmr_ultima_acao) >= StrToTime('00:00:05') then
begin
try
frm_login := Tfrm_login.Create(Application);
Application.CreateForm(Tfrm_login,frm_login);
tmr_tela_login.Enabled := false;
frm_login.ShowModal;
frm_login.Destroy;
frm_login := nil;
tmr_tela_login.Enabled := true;
except
exit;
end;
end;
end;

Quando vc utiliza frm_login.destroy e logo em seguida frm_login := nil gera erro podendo suprimir o frm_login. Destroy.

SEGUNDA PARTE
1) Você informa a criação de uma variável Private do tipo TTime de nome ( Lstr_ultima_acao) sendo que no código onde existe a referência a esta variável vc utilizou a seguinte sintaxe : Ftmr_ultima_digitacao := Time;
o que gera erro pois esta variável não existe
2) Quando vc utiliza a condição if na procedure Tfrm_principal.tnr_loginTimer(Sender TObject) vc informa a strToTime('03:00:00') informando que a tela de login irá aparecer em 03 minutos, quando na realidade essa referência é pra 03 horas.
Se houver algo que eu tenha me enganado, por favor envie-me por email.

Evandro Jorge
ejmachado@bol.com.br


por: Teclemaster (teclemaster@gmail.com) : Out 23, 2010 - 10:25
(Informações sobre o membro | Enviar uma mensagem) http://www.jubado.com.br
Alguém pode me ajudar com essa dica, só preciso dessa última parte sem erros,

gilvandro martins


por: Panco_01 (amendoin.core@hotmail.com) : Dez 12, 2013 - 12:48
(Informações sobre o membro | Enviar uma mensagem) http://http://
Vlw mesmo, me ajudo mtu.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados