Array
(
)

Form Login na frente do principal...

Peninha
   - 26 mar 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:

Citação:

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


Paullsoftware
   - 27 mar 2006

quando você diz:

Citação:
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 Project >> Options >> forms >> Main Form coloque seu form principal, não pode ser o de login! o form login deve estar em Avaliable forms.
crie essa procedure:
#Código

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
#Código
ChamaForm(TfLogin,fLogin);

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

no OnCreate do form Login faço:
#Código
wFechar := False;

no OnCloseQuery do form login faço:
#Código
CanClose := wFechar

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


Paulocesar1301
   - 27 mar 2006

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

Esse códifo eu coloco no Project:

#Código


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:

#Código

If NOT(VarGlobalBooleana) Then
Application.Terminate;


Ans e Bons Códigos


Eniorm
   - 27 mar 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


Martins
   - 27 mar 2006


Citação:
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 Enio, 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:


Paullsoftware
   - 27 mar 2006


Citação:

Citação:
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 Enio, 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:


é isso ai, justamente como mostrei no meu post!
só um detalhe Enio

Citação:
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:


Paulocesar1301
   - 27 mar 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:


Eniorm
   - 01 abr 2006


Citação:

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:


Martins
   - 01 abr 2006


Citação:

Citação:

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:


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

Boa sorte!