Fórum Tela de login não desaparce #322458

29/05/2006

0

Olá amigos!!!

Estou com um problema chato. Fiz algumas pesquisas, mas infelizmente não encontrei a solução. Quando executo a aplicação, aparece a tela de login. Após a validação, é exibida a tela principal. Pois bem, a tela de login não finaliza em hipótese alguma (fica por trás da tela principal).

Abaixo segue o código utilizado, caso tenha algo errado, por favor, mostrem-me se possível.

No View Source

Application.Initialize;
//Application.CreateForm(TfrmLogin, frmLogin);
Application.CreateForm(TfrmPrincipal, frmPrincipal);
Application.CreateForm(TdmConexao, dmConexao);
Application.CreateForm(TdmUsuarios, dmUsuarios);

try
Application.CreateForm(TfrmLogin, frmLogin);
frmLogin.ShowModal;
if frmLogin.ModalResult <> mrOk then
begin
ShowMessage(´Login/senha incorretos.´);
Halt;
end;
finally
FreeAndNil(frmLogin);
end;

Application.Run;


No botão logar....

procedure TfrmLogin.btnLogarClick(Sender: TObject);
begin
if edtLogin.Text = ´´ then
begin
edtLogin.SetFocus;
Application.MessageBox(´O campo ´LOGIN´ deve ser preenchido.´,
´ Erro´, MB_OK + MB_ICONERROR);
exit;
end;

if edtSenha.Text = ´´ then
begin
edtSenha.SetFocus;
Application.MessageBox(´O campo ´SENHA´ deve ser preenchido.´,
´ Erro´, MB_OK + MB_ICONERROR);
exit;
end;

if validaUsuario(edtLogin.Text, edtSenha.Text) = true then
begin
ModalResult := mrOk;
frmPrincipal.ShowModal
end
else
ModalResult := mrCancel;
end;

Agradeço desde já pela velha atenção de sempre.

Um abraço,

Rogério


Roger1976

Roger1976

Responder

Posts

29/05/2006

Massuda

O problema é que você está dando ShowModal no form principal a partir do form de login.... você não precisa fazer isso. Simplesmente deixe seu form de login retornar mrOK ou mrCancel, sem se preocupar com o form principal já que seu código no DPR já faz isso.


Responder

Gostei + 0

30/05/2006

Roger1976

Massuda, eu não sei se entendi direito, mas deverei tirar o frmPrinicipal.ShowModal do botão logar? É isso?

Eu fiz o teste, porém após a validação do usuário, a tela do login e a principal desaparecem. Uma outra coisa, como o form principal será chamado? Gostaria que, se possível, me indicasse no meu código uma outra modificação que poderia fazer para solucionar de vez o problema.

Obrigado pela dica.


Responder

Gostei + 0

31/05/2006

Roger1976

Massuda, eu encontrei uma solução, mas não sei se é a melhor. Veja abaixo:

if validaUsuario(edtLogin.Text, edtSenha.Text) = true then
begin
ModalResult := mrOk;
frmLogin.Hide; // Acrescentei esta linha
frmPrincipal.ShowModal
end
else
ModalResult := mrCancel;
end;

Será que essa é uma boa solução?

Grato.


Responder

Gostei + 0

31/05/2006

Massuda

No form de login, isso deveria bastar...
procedure TfrmLogin.btnLogarClick(Sender: TObject); 
begin 
  ...
  if validaUsuario(edtLogin.Text, edtSenha.Text) = true then
    ModalResult := mrOk; 
  else 
    ModalResult := mrCancel; 
end;

Agora, no seu DPR, pode fazer assim...
...
frmLogin := TfrmLogin.Create(nil); 
try 
  if frmLogin.ShowModal <> mrOk then begin 
    ShowMessage(´Login/senha incorretos.´); 
    Halt; 
  end; 
finally 
  FreeAndNil(frmLogin); 
end; 
...



Responder

Gostei + 0

03/06/2006

Roger1976

Massuda, valeu pela dica, só está acontecendo um probleminha: quando clico no LOGAR, a tela principal abre e em seguida fecha. Ainda não sei por que isso está acontecendo.


Responder

Gostei + 0

06/06/2006

Martins

Massuda, valeu pela dica, só está acontecendo um probleminha: quando clico no LOGAR, a tela principal abre e em seguida fecha. Ainda não sei por que isso está acontecendo.


Como ficou seu código?

vc poderia postar seu código aqui por favor!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar