Tela de login no Delphi XE8

Delphi

23/03/2017

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.
Yuri Menechelli

Yuri Menechelli

Curtidas 0

Respostas

Raimundo Pereira

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;
GOSTEI 0
Ermesom Lourenco

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.
GOSTEI 0
Yuri Menechelli

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;
GOSTEI 0
POSTAR