Logoff \ Login
Olá amigos,
No onShow do form principal tenho o seguinte código para fazer o login no sistema:
// Solicita login ao usuário
fmLogin := tfmLogin.Create(Self);
fmLogin.ShowModal;
fmLogin.Free;
Vocês sabem como fazer Logoff \ Login, ou seja, trocar de usuário sem sair totalmente do sistema ?
Obrigado.
Abraços.
No onShow do form principal tenho o seguinte código para fazer o login no sistema:
// Solicita login ao usuário
fmLogin := tfmLogin.Create(Self);
fmLogin.ShowModal;
fmLogin.Free;
Vocês sabem como fazer Logoff \ Login, ou seja, trocar de usuário sem sair totalmente do sistema ?
Obrigado.
Abraços.
Francisco.riva1
Curtidas 0
Respostas
Mahdak
08/10/2007
amigo, vale a pena voce conferir o componente user control. é free e faz tudo isso e mais ainda....
se nao me engano: www.usercontrol.net
se nao me engano: www.usercontrol.net
GOSTEI 0
Francisco.riva1
08/10/2007
Olá Mahdak, eu conheço esse componente sim, e ele realmente é muito bom ... acontece q em um projeto específico tenho algumas situações que o user control não cobre :(
Abraços
Abraços
GOSTEI 0
Werlon Goulart
08/10/2007
Não seria :
1 - Fechar todos os Form (ou solicitar seu fechamento);
2 - Abrir a Tela de Login como Modal (impedindo o acesso ao menu);
3 - Se o login for aceito Seta as permissões (se existirem...) e se não for aceito vc decide se fecha o sistema ou fica eternamente na tela de Login;
Já fiz algo do tipo, só q era configurado para fechar as janelas e abrir a janela de login qndo o sistema ficasse parado pelo tempo configurado, sem nenhum acesso de mouse ou teclado.
Não seria :
1 - Fechar todos os Form (ou solicitar seu fechamento);
2 - Abrir a Tela de Login como Modal (impedindo o acesso ao menu);
3 - Se o login for aceito Seta as permissões (se existirem...) e se não for aceito vc decide se fecha o sistema ou fica
eternamente na tela de Login;
Já fiz algo do tipo, só q era configurado para fechar as janelas e abrir a janela de login qndo o sistema ficasse parado pelo
tempo configurado, sem nenhum acesso de mouse ou teclado.
m grande Abraço.
Werlon Goulart
private { Private declarations }
//Recebe a Msg de Ociosidade do Windows e Liga o Timer.
Procedure AplicacaoOciosa(var Msg: TMsg; var Handled: Boolean);
//Liga o Timer q aguarda 3 minutos de Ociosidade para chamar a Tela de Login.
Procedure LigaTimer(Sender: TObject; var Done: Boolean);
procedure TFmMenu.FormCreate(Sender: TObject);
begin
Application.OnMessage:=AplicacaoOciosa;
Application.OnIdle:= LigaTimer;
end;
//Liga o Timer q aguarda o tempo Configurado, em um componente TTimer da paleta System do Delphi7, de Ociosidade para chamar a Tela de Login,
// Se a tela de Vendas NAO estiver ativa.
Procedure TfmMenu.LigaTimer(Sender: TObject; var Done: Boolean);
begin
if fmCVenda=Nil then //No meu caso se a tela de vendas estivesse berta não fazia Logout Automático.
edTimer.Enabled:=True;
end;
//Desliga o Timer se Existir Movimentacao no Sistema.
Procedure TfmMenu.AplicacaoOciosa(var Msg: TMsg; var Handled: Boolean);
begin
//Movimento de Clique do Mouse e Teclas.
Case Msg.Message of //Desliga o Timer.
WM_LBUTTONDOWN, WM_RBUTTONDOWN, WM_KEYDOWN: edTimer.Enabled:=False;
end;
end;
procedure TFmMenu.edTimerTimer(Sender: TObject);
begin
if fmLogin=Nil then begin // Nao Existe
//Fecha os Forms que Estiverem abertos (Se em Edicao Perde a Alteracao).
FechaJanelas;
fmLogin:=TfmLogin.Create(Application);
fmLogin.Caption=mLogin.Caption + ´ - Sistema Bloqueado por Inatividade´;
fmLogin.ShowModal;
fmLogin:=Nil;
end;
edTimer.Enabled:=False; //Desliga o Timer;
end;
//Fecha todas as janelas e abre o Login para Usuario entrar com Nome e Senha novamente.
Procedure FechaJanelas;
begin
//Fecha os Forms que Estiverem abertos (Se em Edicao Perde a Alteracao).
if fmSobre<>Nil then fmSobre.Close;
if fmBackup<>Nil then fmBackup.Close;
if fmGrupo<>Nil then fmGrupo.Close;
if fmFornecedor<>Nil then fmFornecedor.Close;
if fmUnidade<>Nil then fmUnidade.Close;
//...
//...
//...
if fmFabrica<>Nil then fmFabrica.Close;
end;
O exemplo é simples, mas pode ser aplicado a qquer tarefa q vc necessitar executar... Um Backup, Garbage Coletion (no caso do Interbase), screen saver proprietário ou qquer tarefa maluca q vc inventar pras horas ´vagas´ da sua aplicação...
1 - Fechar todos os Form (ou solicitar seu fechamento);
2 - Abrir a Tela de Login como Modal (impedindo o acesso ao menu);
3 - Se o login for aceito Seta as permissões (se existirem...) e se não for aceito vc decide se fecha o sistema ou fica eternamente na tela de Login;
Já fiz algo do tipo, só q era configurado para fechar as janelas e abrir a janela de login qndo o sistema ficasse parado pelo tempo configurado, sem nenhum acesso de mouse ou teclado.
Não seria :
1 - Fechar todos os Form (ou solicitar seu fechamento);
2 - Abrir a Tela de Login como Modal (impedindo o acesso ao menu);
3 - Se o login for aceito Seta as permissões (se existirem...) e se não for aceito vc decide se fecha o sistema ou fica
eternamente na tela de Login;
Já fiz algo do tipo, só q era configurado para fechar as janelas e abrir a janela de login qndo o sistema ficasse parado pelo
tempo configurado, sem nenhum acesso de mouse ou teclado.
m grande Abraço.
Werlon Goulart
private { Private declarations }
//Recebe a Msg de Ociosidade do Windows e Liga o Timer.
Procedure AplicacaoOciosa(var Msg: TMsg; var Handled: Boolean);
//Liga o Timer q aguarda 3 minutos de Ociosidade para chamar a Tela de Login.
Procedure LigaTimer(Sender: TObject; var Done: Boolean);
procedure TFmMenu.FormCreate(Sender: TObject);
begin
Application.OnMessage:=AplicacaoOciosa;
Application.OnIdle:= LigaTimer;
end;
//Liga o Timer q aguarda o tempo Configurado, em um componente TTimer da paleta System do Delphi7, de Ociosidade para chamar a Tela de Login,
// Se a tela de Vendas NAO estiver ativa.
Procedure TfmMenu.LigaTimer(Sender: TObject; var Done: Boolean);
begin
if fmCVenda=Nil then //No meu caso se a tela de vendas estivesse berta não fazia Logout Automático.
edTimer.Enabled:=True;
end;
//Desliga o Timer se Existir Movimentacao no Sistema.
Procedure TfmMenu.AplicacaoOciosa(var Msg: TMsg; var Handled: Boolean);
begin
//Movimento de Clique do Mouse e Teclas.
Case Msg.Message of //Desliga o Timer.
WM_LBUTTONDOWN, WM_RBUTTONDOWN, WM_KEYDOWN: edTimer.Enabled:=False;
end;
end;
procedure TFmMenu.edTimerTimer(Sender: TObject);
begin
if fmLogin=Nil then begin // Nao Existe
//Fecha os Forms que Estiverem abertos (Se em Edicao Perde a Alteracao).
FechaJanelas;
fmLogin:=TfmLogin.Create(Application);
fmLogin.Caption=mLogin.Caption + ´ - Sistema Bloqueado por Inatividade´;
fmLogin.ShowModal;
fmLogin:=Nil;
end;
edTimer.Enabled:=False; //Desliga o Timer;
end;
//Fecha todas as janelas e abre o Login para Usuario entrar com Nome e Senha novamente.
Procedure FechaJanelas;
begin
//Fecha os Forms que Estiverem abertos (Se em Edicao Perde a Alteracao).
if fmSobre<>Nil then fmSobre.Close;
if fmBackup<>Nil then fmBackup.Close;
if fmGrupo<>Nil then fmGrupo.Close;
if fmFornecedor<>Nil then fmFornecedor.Close;
if fmUnidade<>Nil then fmUnidade.Close;
//...
//...
//...
if fmFabrica<>Nil then fmFabrica.Close;
end;
O exemplo é simples, mas pode ser aplicado a qquer tarefa q vc necessitar executar... Um Backup, Garbage Coletion (no caso do Interbase), screen saver proprietário ou qquer tarefa maluca q vc inventar pras horas ´vagas´ da sua aplicação...
GOSTEI 0
Adriano Santos
08/10/2007
Dêem uma olhada no meu blog que tem uma dica bem simples do que o Francisco precisa, inclusive ele mesmo já me respondeu por email dizendo que funcinou.
Abs
[url=http://www.delphitodelphi.blogspot.com]DtD - Delphi to Delphi[/url]
Quem quiser pode me contatar pela lista de dicussão criada no YahooGrupos. tem os dados de ingresso no meu blog também.
Abs
Abs
[url=http://www.delphitodelphi.blogspot.com]DtD - Delphi to Delphi[/url]
Quem quiser pode me contatar pela lista de dicussão criada no YahooGrupos. tem os dados de ingresso no meu blog também.
Abs
GOSTEI 0