Login com Forms MDI
Galera tenho uma aplicação MDI, e preciso colocar o login antes de aparecer o sistema...Como fazer ?Quero q valide primeiro o usuario e depois abra o sistema.
Valeu
Valeu
Michel
Curtidas 0
Respostas
Brunobaco
28/04/2005
Nao sei se entendi bem sua pergunta, mas que tal se vc fizesse a verificacao no oncreate. se passar, abre, caso contrario, abort.
Espero ter ajudado. Senao, explique melhor sua pergunta.
Espero ter ajudado. Senao, explique melhor sua pergunta.
GOSTEI 0
Edilcimar
28/04/2005
crie um form normal para o login coloque-o como sendo o primeiro a ser criado e dê um showmodal nele
GOSTEI 0
Michel
28/04/2005
Pessoal, fiz assim : So criei o data modulo e o formulario de login, deste jeito ele executa a aplicação belezinha, mas quando eu clico para abrir o formulario de cliente que é ´ filho ´ ele da um erro mostrando que nao possui formulario ´ pai ´ ativo.
begin
Application.Initialize;
Application.CreateForm(TDados, Dados);
Application.CreateForm(TFLogin, FLogin);
Application.Run;
procedure TFLogin.SpeedButton1Click(Sender: TObject);
begin
if Edit2.Text = ´1´ then
begin
FPrincipal := TFPrincipal.Create(Self);
FPrincipal.Show;
end;
end;
begin
Application.Initialize;
Application.CreateForm(TDados, Dados);
Application.CreateForm(TFLogin, FLogin);
Application.Run;
procedure TFLogin.SpeedButton1Click(Sender: TObject);
begin
if Edit2.Text = ´1´ then
begin
FPrincipal := TFPrincipal.Create(Self);
FPrincipal.Show;
end;
end;
GOSTEI 0
Massuda
28/04/2005
Pessoal, fiz assim : So criei o data modulo e o formulario de login...
Para não ter dores de cabeça, faça assim:[list:1767c06c2b][*:1767c06c2b]deixe o Delphi criar automaticamente seu data module e seu form principal (não o form de login)[*:1767c06c2b]no evento OnCreate do seu form principal, crie o form de login e exiba esse form usando ShowModal[*:1767c06c2b]se o login for inválido, você pode dar um Application.Terminate ou Halt[*:1767c06c2b]destrua o form de login quando ele não for mais necessário[/list:u:1767c06c2b]Prefira fazer desse modo porque o Delphi considera que seu form principal é o primeiro form criado via Application.CreateForm ou o primeiro form criado com Owner = Application (o que acontecer primeiro). O Delphi tem um tratamento especial para o form principal que pode causar problemas se você fizer do jeito que você mostrou.GOSTEI 0
Michel
28/04/2005
Massuda, fiz o que vc falou mas quando ele é executado da a seguinte mensagem ( Cannot make a visible window modal ).
Chamei o FLogin no Oncreate do formulario principal;
** FLogin := TFLogin.Create(Self);
FLogin.ShowModal;
Valeu.
Chamei o FLogin no Oncreate do formulario principal;
** FLogin := TFLogin.Create(Self);
FLogin.ShowModal;
Valeu.
GOSTEI 0
Massuda
28/04/2005
...Cannot make a visible window modal...
Seu form de login não deve estar na lista de forms criados automaticamente pelo Delphi e ter FormStyle = fsNormal. Fora isso, use um código mais ou menos assim:FLogin := TFLogin.Create(nil); try if FLogin.ShowModal = mrOK then begin if ...login inválido... then Halt; end; finally FreeAndNil(FLogin); end;
GOSTEI 0
Mysys
28/04/2005
form principal fsMDIForm
form login fsNormal
o source do projeto fica assim
Try
FRMLogin := TFRMLogin.Create(Application);
Application.CreateForm(TFRMMenu, FRMMenu);
Application.CreateForm(TFDM, FDM);
FRMLogin.ShowModal;
Finally
FRMLogin.Free;
end;
Application.Run;
ai na tela de login voce tem 2 botoes
BTNEntrar pra simplesmente entrar voloc Close; só close;
ou
//------ queri verificando o cadastro de usuarios
FDM.QRY001.Close;
FDM.QRY001.Params[0].AsString := EDUsuario.Text;
FDM.QRY001.Open;
If FDM.QRY001.IsEmpty then
Begin
Mensagem(´Usuário ´+EDUsuario.TExt+´ não cadastrado !´);
EDUsuario.SetFocus;
End
Else
Begin
If Encrypt(FDM.QRY001SENUSU.AsString) <> EDSenha.Text Then
Begin
Mensagem(´Senha Inválida, Tente novamente !´);
EDSenha.SetFocus;
End
Else
Begin
FRMMenu.Configura_Menu;
FRMLogin.Tag := 1;
Close;
End;
End;
BTNCancelar
Close;
FRMMenu.Free;
ai ele fecha o login e o form principal
form login fsNormal
o source do projeto fica assim
Try
FRMLogin := TFRMLogin.Create(Application);
Application.CreateForm(TFRMMenu, FRMMenu);
Application.CreateForm(TFDM, FDM);
FRMLogin.ShowModal;
Finally
FRMLogin.Free;
end;
Application.Run;
ai na tela de login voce tem 2 botoes
BTNEntrar pra simplesmente entrar voloc Close; só close;
ou
//------ queri verificando o cadastro de usuarios
FDM.QRY001.Close;
FDM.QRY001.Params[0].AsString := EDUsuario.Text;
FDM.QRY001.Open;
If FDM.QRY001.IsEmpty then
Begin
Mensagem(´Usuário ´+EDUsuario.TExt+´ não cadastrado !´);
EDUsuario.SetFocus;
End
Else
Begin
If Encrypt(FDM.QRY001SENUSU.AsString) <> EDSenha.Text Then
Begin
Mensagem(´Senha Inválida, Tente novamente !´);
EDSenha.SetFocus;
End
Else
Begin
FRMMenu.Configura_Menu;
FRMLogin.Tag := 1;
Close;
End;
End;
BTNCancelar
Close;
FRMMenu.Free;
ai ele fecha o login e o form principal
GOSTEI 0
Mahdak
28/04/2005
tenta assim(Todos os Forms sao MDI, menos o Principal):
Abraços! :x
---------------
Passo1.
---------
// UNIT RAIZ
program Adm;
uses
Forms,
Unit7 in ´Units\Unit7.pas´ ,
Unit8 in ´Units\Unit8.pas´ ,
Unit1 in ´Units\Unit1.pas´ ;
{$R *.RES}
begin
{*********************}
Application.CreateForm(TPrincipal, Principal);
Splash.UpDate;
{*********************}
Splash := TSplash.Create(Application);
if Splash = nil then
Splash := TSplash .Create ( Application );
Splash .Show;
{*********************}
ImputBox := TImputBox.Create(Application);
if ImputBox = nil then
ImputBox := TImputBox.Create ( Application );
ImputBox.ShowModal;
ImputBox.UpDate;
end;
------------------------------------------------------------
Passo2.
----------
// No imputBox vai ser a verificação do Usuario / Senha
------------------------------------------------------------
Passo3.
----------
procedure TPrincipal.FormCreate(Sender: TObject);
var
i : Integer;
d,m,y : word;
j : byte;
Data : TDateTime;
begin
For i := 1 to 8000 do
begin
Splash.PB.Position := Splash.PB.Position + 1;
Splash.Update;
end;
end;
-----------------------------------------------------------------------
Abraços! :x
---------------
Passo1.
---------
// UNIT RAIZ
program Adm;
uses
Forms,
Unit7 in ´Units\Unit7.pas´ ,
Unit8 in ´Units\Unit8.pas´ ,
Unit1 in ´Units\Unit1.pas´ ;
{$R *.RES}
begin
{*********************}
Application.CreateForm(TPrincipal, Principal);
Splash.UpDate;
{*********************}
Splash := TSplash.Create(Application);
if Splash = nil then
Splash := TSplash .Create ( Application );
Splash .Show;
{*********************}
ImputBox := TImputBox.Create(Application);
if ImputBox = nil then
ImputBox := TImputBox.Create ( Application );
ImputBox.ShowModal;
ImputBox.UpDate;
end;
------------------------------------------------------------
Passo2.
----------
// No imputBox vai ser a verificação do Usuario / Senha
------------------------------------------------------------
Passo3.
----------
procedure TPrincipal.FormCreate(Sender: TObject);
var
i : Integer;
d,m,y : word;
j : byte;
Data : TDateTime;
begin
For i := 1 to 8000 do
begin
Splash.PB.Position := Splash.PB.Position + 1;
Splash.Update;
end;
end;
-----------------------------------------------------------------------
GOSTEI 0
Lorde_morte.
28/04/2005
//------ queri verificando o cadastro de usuarios
FDM.QRY001.Close;
FDM.QRY001.Params[0].AsString := EDUsuario.Text;
FDM.QRY001.Open;
If FDM.QRY001.IsEmpty then
Begin
Mensagem(´Usuário ´+EDUsuario.TExt+´ não cadastrado !´);
EDUsuario.SetFocus;
End
Else
Begin
If Encrypt(FDM.QRY001SENUSU.AsString) <> EDSenha.Text Then
Begin
Mensagem(´Senha Inválida, Tente novamente !´);
EDSenha.SetFocus;
End
Else
Begin
FRMMenu.Configura_Menu;
FRMLogin.Tag := 1;
Close;
End;
End;
BTNCancelar
Close;
FRMMenu.Free;
ai ele fecha o login e o form principal
Qual deve ser codigo dessa Query para ela funcione da mesma maneira com usuarios cadastrado pelo componente TIBSecurityService?
Me ajudem...
GOSTEI 0