Form Login na frente do principal...

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

Respostas

27/03/2006

Paullsoftware

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!


Responder Citar

27/03/2006

Paulocesar1301

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


Responder Citar

27/03/2006

Eniorm

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


Responder Citar

27/03/2006

Martins

[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:


Responder Citar

27/03/2006

Paullsoftware

[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:


Responder Citar

27/03/2006

Paulocesar1301

É 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:


Responder Citar

01/04/2006

Eniorm

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:


Responder Citar

01/04/2006

Martins

[quote] 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!


Responder Citar