Tela de login no Delphi XE8
Gente Boa Noite, estou com um pequeno probleminha, e estou martelando muito nisso.
eu estou montando um sistema de vendas, ai eu criei um form de splash certinho, e a de login tbm, ai eu ponho o login e a senha vai certinho, porem quando clico no botão do (x) pra fechar o form de login, ela entra no form principal como se eu estivesse logado, por favor alguem pode me ajudar.
desde já
agradeço muito.
e detalhe comecei um pouquinho de tempo somente estudando com o DEV Media e videos, muito obrigado à todos.
eu estou montando um sistema de vendas, ai eu criei um form de splash certinho, e a de login tbm, ai eu ponho o login e a senha vai certinho, porem quando clico no botão do (x) pra fechar o form de login, ela entra no form principal como se eu estivesse logado, por favor alguem pode me ajudar.
desde já
agradeço muito.
e detalhe comecei um pouquinho de tempo somente estudando com o DEV Media e videos, muito obrigado à todos.
Yuri Menechelli
Curtidas 0
Respostas
Raimundo Pereira
23/03/2017
Bom dia.
Você pode criar uma variavel global "Logado:string"
Quando você realizar login preenche esta variável com Logado:='S';
Então no seu form principal você coloca um timer , que deverá verifica se a variável é diferente de S.
IF Logado<>'S' then
begin
Timer.enabled:=false;
login.showmodal;
end;
Você pode criar uma variavel global "Logado:string"
Quando você realizar login preenche esta variável com Logado:='S';
Então no seu form principal você coloca um timer , que deverá verifica se a variável é diferente de S.
IF Logado<>'S' then
begin
Timer.enabled:=false;
login.showmodal;
end;
GOSTEI 0
Ermesom Lourenco
23/03/2017
Como está sendo feita a chamada da tela de login?
Eu resolvi este problema de forma simples, criando uma função na tela de login que retorna Booleano se foi realizado o login ou não. Dentro desta função eu tenho a chamada da própria tela de login e todo o tratamento para ver se o usuário cancelou. Caso retorne False no login o FormPrincipal chama a função Application.Terminate; que fecha a aplicação e assim o usuário não terá acesso.
Existem N outras formas de se resolver o caso, mas creio que esta seja a mais simples.
Também poderia fazer a função Login(); retornar um objeto contendo o usuário logado, que no caso se estiver Null (ou Nil no delphi) o sistema se auto fecharia.
Eu resolvi este problema de forma simples, criando uma função na tela de login que retorna Booleano se foi realizado o login ou não. Dentro desta função eu tenho a chamada da própria tela de login e todo o tratamento para ver se o usuário cancelou. Caso retorne False no login o FormPrincipal chama a função Application.Terminate; que fecha a aplicação e assim o usuário não terá acesso.
Existem N outras formas de se resolver o caso, mas creio que esta seja a mais simples.
Também poderia fazer a função Login(); retornar um objeto contendo o usuário logado, que no caso se estiver Null (ou Nil no delphi) o sistema se auto fecharia.
GOSTEI 0
Yuri Menechelli
23/03/2017
olha estou fazendo a chamada da tela de login pelo TfrmPrincipal.FormCreate, esta mais ou menos assim:
procedure TfrmPrinipal.FormCreate(Sender: TObject);
begin
frmSplash := TfrmSplash.Create(nil);
try
frmSplash.ShowModal;
finally
FreeAndNil(frmSplash);
end;
{frmLogin := TfrmLogin.Create(nil);
try
frmLogin.ShowModal;
if frmLogin.ModalResult = mrNo then
Application.Terminate;
finally
FreeAndNil(frmLogin);
end;}
end;
procedure TfrmPrinipal.FormCreate(Sender: TObject);
begin
frmSplash := TfrmSplash.Create(nil);
try
frmSplash.ShowModal;
finally
FreeAndNil(frmSplash);
end;
{frmLogin := TfrmLogin.Create(nil);
try
frmLogin.ShowModal;
if frmLogin.ModalResult = mrNo then
Application.Terminate;
finally
FreeAndNil(frmLogin);
end;}
end;
GOSTEI 0