Form Login na frente do principal...

Delphi

26/03/2006

Ola pessoal.
Gente qual a forma mais facíl de fazer com que meu form de login venha a frente do form principal da aplicação, vejam bem, eu coloco ele iniciando primeiro que o Principal ai uso este código para validar senha e login e fecha-lo para começar trabalhar:
procedure TFrm_Login.BtLoginClick(Sender: TObject); begin BtLogin.Tag := BtLogin.Tag + 1; If Not Dmdados.IBqUsuario.Locate(´Login;Senha´,VarArrayOf([EdtLogin.Text,EdtSenha.Text]),[]) Then Begin MessageBox(0,´Nome e ou Senha não confere.´+#13+ ´Favor Corrigir.´,´ATENÇÃO´,mb_Ok+Mb_IconStop ); EdtLogin.Clear; EdtSenha.Clear; EdtLogin.SetFocus; end else begin MessageDlg(´LOGIN CONFIRMADO!´,MTInformation,[MbOK],0); Frm_Login.Close; Frm_Principal.Show; end; IF BtLogin.Tag = 3 Then Application.Terminate; end;

Mas ai ele fecha toda minha aplicação, se coloco ele no evento OnActivate do Principal ele aparece sozinho, estou ficando sem solução, alguém me ajuda ai por favor.
Erivan


Peninha

Peninha

Curtidas 0

Respostas

Paullsoftware

Paullsoftware

26/03/2006

quando você diz:
Mas ai ele fecha toda minha aplicação, se coloco ele no evento OnActivate do Principal ele aparece sozinho, estou ficando sem solução, alguém me ajuda ai por favor. Erivan
para isso acontecer esse form deve estar como sendo o form principal de sua aplicação, vá em [b:3b3c744f4c]Project >> Options >> forms >> Main Form[/b:3b3c744f4c] coloque seu form principal, não pode ser o de login! o form login deve estar em [b:3b3c744f4c]Avaliable forms[/b:3b3c744f4c].
crie essa procedure:
procedure ChamaForm(fClass:TFormClass; Form:TForm);
begin
 try
  Application.CreateForm(fClass,Form);
  Form.ShowModal;
  Finally
  Form.Release;
  Form:=nil;
 end;
end;

no evento onShow do form Principal faça
ChamaForm(TfLogin,fLogin);

Alguns detalhes...
crie uma variavel do boolean no seu form login
var
  fLogin: TfLogin;
  wFechar : boolean;//Isso para evitar que o usuário feche a tela de login

no OnCreate do form Login faço:
wFechar := False;

no OnCloseQuery do form login faço:
CanClose := wFechar

no botão de acesso (OK, Entrar, Acessar, ou sei lá o que) faço:
dê uma olhada nesse tópico
[url]http://forum.clubedelphi.net/viewtopic.php?t=74862&highlight=login[/url]
espero ter ajudado!


GOSTEI 0
Paulocesar1301

Paulocesar1301

26/03/2006

Brow, podes trabalhar como uma splash (pelo menos é como faço aki):

Esse códifo eu coloco no Project:

begin
  Application.Initialize;

  Application.CreateForm(TSeuFormDeLofin, SeuFormDeLofin);
  SeuFormDeLofin.ShowModal;
  FreeAndNil(SeuFormDeLofin);

  If NOT(VarGlobalBooleana) Then
    Application.Terminate;

  Try
     Application.CreateForm(TFRMPrincipal, FRMPrincipal);
  Finally
    FRMPrincipal.Show;

    Application.Run;
  End;


Use uma variável global para testar se o login foi bem sucedido ou não:

If NOT(VarGlobalBooleana) Then
    Application.Terminate;


Ans e Bons Códigos


GOSTEI 0
Eniorm

Eniorm

26/03/2006

Eu faço assim, crio e dou showmodal no form de login no evento OnActivate do form principal.....

assim abre o form principal, e logo após, o form de login!!!!

falow


GOSTEI 0
Martins

Martins

26/03/2006

[quote:df15a3df21=´Enio Marconcini´]Eu faço assim, crio e dou showmodal no form de login no evento OnActivate do form principal.....

assim abre o form principal, e logo após, o form de login!!!!

falow[/quote:df15a3df21]

Muitos desenvolvedores fazem assim tb [b:df15a3df21]Enio[/b:df15a3df21], nesse caso devem tomar cuidado para não permitir q o form possa ser fechado com ALT+F4 tornando o formulário de login inútil, não vejam apenas pelo lado do desenvolvedor, imaginem q usuários são curiosos e sempre tentam dar uma de engraçadinhos.

Boa sorte! :wink:


GOSTEI 0
Paullsoftware

Paullsoftware

26/03/2006

[quote:178cbb9364=´Enio Marconcini´]Eu faço assim, crio e dou showmodal no form de login no evento OnActivate do form principal..... assim abre o form principal, e logo após, o form de login!!!! falow


Muitos desenvolvedores fazem assim tb [b:178cbb9364]Enio[/b:178cbb9364], nesse caso devem tomar cuidado para não permitir q o form possa ser fechado com ALT+F4 tornando o formulário de login inútil, não vejam apenas pelo lado do desenvolvedor, imaginem q usuários são curiosos e sempre tentam dar uma de engraçadinhos.

Boa sorte! :wink:[/quote:178cbb9364]

é isso ai, justamente como mostrei no meu post!
só um detalhe [b:178cbb9364]Enio[/b:178cbb9364]
Eu faço assim, crio e dou showmodal no form de login no evento OnActivate do form principal..... assim abre o form principal, e logo após, o form de login!!!! falow

quando usado no OnActivate do form, deve ter cuidado para não ficar pedinho o login toda hora...
pq ai quando o usuário minimizar e restaurar a aplicação vai voltar a pedia a senha...! :roll:


GOSTEI 0
Paulocesar1301

Paulocesar1301

26/03/2006

É exatamente por isso que não uso o OnActivate do Principal... trato como uma splash e só crio o principal se o login resultar OK... assim evito problemase linhas de tratamento de ativação de tela desnecessários.

Bons Códigos :wink:


GOSTEI 0
Eniorm

Eniorm

26/03/2006

quando usado no OnActivate do form, deve ter cuidado para não ficar pedinho o login toda hora... pq ai quando o usuário minimizar e restaurar a aplicação vai voltar a pedia a senha...! :roll:


estranho, testei isso mas não aconteceu de abrir novamente a tela de login....

minimizei, maximizei, restaurava, coloquei a aplicação em segunto plano e depois voltei a ela com Alt+Tab ou pelo barra de aplicativos, mas nada de estranho........... :shock:


GOSTEI 0
Martins

Martins

26/03/2006

[quote:8c803a4fe4=´Enio Marconcini´]
quando usado no OnActivate do form, deve ter cuidado para não ficar pedinho o login toda hora... pq ai quando o usuário minimizar e restaurar a aplicação vai voltar a pedia a senha...! :roll:


estranho, testei isso mas não aconteceu de abrir novamente a tela de login....

minimizei, maximizei, restaurava, coloquei a aplicação em segunto plano e depois voltei a ela com Alt+Tab ou pelo barra de aplicativos, mas nada de estranho........... :shock:[/quote:8c803a4fe4]

Penso q deve ter havido uma pequena confusão do colega entre os eventos [b:8c803a4fe4]OnPaint[/b:8c803a4fe4] e [b:8c803a4fe4]OnActive[/b:8c803a4fe4], se vc colocar no [b:8c803a4fe4]OnPaint,[/b:8c803a4fe4] com certeza vai ser incomodado pela tela de login.

Boa sorte!


GOSTEI 0
POSTAR