Login com Forms MDI

Delphi

28/04/2005

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


Michel

Michel

Curtidas 0

Respostas

Brunobaco

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.


GOSTEI 0
Edilcimar

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

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;


GOSTEI 0
Massuda

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

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.


GOSTEI 0
Massuda

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

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


GOSTEI 0
Mahdak

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;

-----------------------------------------------------------------------


GOSTEI 0
Lorde_morte.

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
POSTAR