Fórum MDI... como abrir form de login antes? #259742

24/11/2004

0

tenho meu projeto em MDI ... e no meu projeto um form q eh o form de login...

como faço pra ele abrir apenas o form de login... ae sim...
se o login tiver certo ele

ele abrir a splash do programa e começar a criar os forms do projeto?


alguem pode me ajudar? valeuz :lol:


Salsa

Salsa

Responder

Posts

24/11/2004

Lucas Silva

Eu faço o seguinte...
eu abro o form pai, e depois eu abro o form de login (do tipo fsNormal), e dou um enabled := False no Pai...

T+,
Lucas!


Responder

Gostei + 0

24/11/2004

Salsa

eu faço assim tb... mas nem keria desse jeito... keria como eu expliquei la :(

alguem ae sabe como fazer desse jeito q eu disse?


Responder

Gostei + 0

24/11/2004

Massuda

Imagino que sua janela de splash é aberta no .DPR do seu programa...

Porque você não abre o form de login antes de abrir o splash? Daí você executa ele com ShowModal e, se tudo estiver OK, segue em frente.
var
  Logado: Boolean;
begin
  Application.Initialize;

  // TPasswordDlg seria seu form de login
  with TPasswordDlg.Create(nil) do begin
    try
      if ShowModal = mrOK then
        // checa username/senha, etc
        Logado := True
      else
        Logado := False;
    finally
      Free;
    end;
  end;
    
  if not Logado then Exit;

  // abre o splash, etc

  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.



Responder

Gostei + 0

24/11/2004

Salsa

eu to fazendo assim.. no dpr:

begin
  CreateMutex(nil, True, ´Programa´);
  if (GetLastError = ERROR_ALREADY_EXISTS) then begin
   Dc_MessageDlgCheck(´Você não pode executar outra cópia do aplicativo´,mtInformation,[mbOK],0,mrNo,True);
   exit;
  end;
  Application.Initialize;
  //form de login
  Form3 := TForm3.Create(Application);
  Form3.ShowModal;
end.


ae no form3 q eh o form do login fiz o seguinte:

criei 2 botoes pra teste, o de login e o logoff...
tipo qndo clicko no login blz... ele loga normal...
carrega o splash e em seguida abre as janelas...
porem nao fecha o form de login...

e se eu clicko em logoff.. ele da erro e trava a aplicaçao
:(

alguem sabe pq pode ser?

{botao login ok}
procedure TForm3.loginOKClick(Sender: TObject);
begin
 Form6 := TForm6.Create(self);
 Form6.Show;
 Form6.Update;
 Application.Title := ´Sport Games´;

 Application.CreateForm(TMainForm, MainForm);

 form6.Label1.Caption := ´Carregando módulos básicos´;
 form6.Label1.Update;
 form6.ProgressBar1.Position := form6.ProgressBar1.Position + 1;

 form6.Label1.Caption := ´Informações sobre about´;
 form6.Label1.Update;
 form6.ProgressBar1.Position := form6.ProgressBar1.Position + 1;

 form6.Label1.Caption := ´Carregando informações de status´;
 form6.Label1.Update;
 Application.CreateForm(TForm1, Form1);
 form6.ProgressBar1.Position := form6.ProgressBar1.Position + 1;

 form6.Label1.Caption := ´Carregando opções de chat´;
 form6.Label1.Update;
 Application.CreateForm(TForm4, Form4);
 form6.ProgressBar1.Position := form6.ProgressBar1.Position + 1;
 form6.Label1.Update;

 Application.CreateForm(TForm5, Form5);
 Application.CreateForm(TForm20, Form20);
 Application.CreateForm(TForm18, Form18);

 form6.Label1.Caption := ´Carregando opções de narração´;
 form6.Label1.Update;
 form6.ProgressBar1.Position := form6.ProgressBar1.Position + 1;

 form6.Label1.Caption := ´MP3 player configs´;
 form6.Label1.Update;

 form6.Label1.Caption := ´Carregando módulo de janelas´;
 form6.Label1.Update;
 Application.CreateForm(TForm7, Form7);
 form6.ProgressBar1.Position := form6.ProgressBar1.Position + 1;

 form6.Label1.Caption := ´Carregando stats de user´;
 form6.Label1.Update;
 Application.CreateForm(TForm9, Form9);
 form6.ProgressBar1.Position := form6.ProgressBar1.Position + 1;

 form6.Label1.Caption := ´Informacões de nick´;
 form6.Label1.Update;
 form6.Label1.Caption := ´Carregando opções de nick´;
 form6.Label1.Update;
 Application.CreateForm(TForm15, Form15);
 form6.ProgressBar1.Position := form6.ProgressBar1.Position + 1;

 form6.Label1.Caption := ´Carregando config. de away´;
 form6.Label1.Update;
 Application.CreateForm(TForm16, Form16);
 form6.ProgressBar1.Position := form6.ProgressBar1.Position + 1;

 form6.Label1.Caption := ´Carregando web browser´;
 form6.Label1.Update;
 Application.CreateForm(TOKBottomDlg, OKBottomDlg);
 Application.CreateForm(TForm22, Form22);

 Form6.Hide;
 Form6.Free;
 Application.Run;

 fecha := false;
 form3.free;
end;

{botao logoff}
procedure TForm3.loginERROClick(Sender: TObject);
begin
 fecha := true;
 form3.free;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
 fecha := true;
end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 if (fecha) then begin
  form3.free;
  Application.Terminate;
 end;
end;



Responder

Gostei + 0

24/11/2004

Massuda

Embora eu não concorde muito com a estruura do seu programa, eu só posso sugerir que você crie o Form3 assim:
begin 
  CreateMutex(nil, True, ´Programa´); 
  if (GetLastError = ERROR_ALREADY_EXISTS) then begin 
   Dc_MessageDlgCheck(´Você não pode executar outra cópia do aplicativo´,mtInformation,[mbOK],0,mrNo,True); 
   exit; 
  end; 
  Application.Initialize; 
  //form de login 
  Form3 := TForm3.Create(nil);  // <- nil ao inves de Application
  Form3.ShowModal; 
end. 
Dessa maneira, o Delphi não vai tentar destruir o Form3 quando executar o Application.Terminate.


Responder

Gostei + 0

25/11/2004

Salsa

q nada massuda.... continua a mesma coisa...

qndo aperto login ele nao fecha o form3 apos entrar no programa...

e qndo aperto logoff...
ele da error...

exception class   : EAccessViolation
exception message : Access violation at address E8382444. Read of address E8382444.


:/

fiz as alteraçoes q vc falou e nada....

sera q ninguem sabe como resolver esse problema nao?


Responder

Gostei + 0

25/11/2004

Salsa

poxa, sera q ninguem sabe me ajudar nao?


Responder

Gostei + 0

25/11/2004

Massuda

Não tinha percebido que você destrói o Form3 de dentro do próprio Form3 (isso não é uma boa idéia)... tentando manter o que você já fez, minha última sugestão seria:[list:b3592552bd][*:b3592552bd]Crie o Form3 como você estava fazendo antes
Form3 := TForm3.Create(Application);
[*:b3592552bd]No código de TForm3, não dê Free no Form3. Deixe o Application se encarregar de dar automaticamente Free no Form3.[*:b3592552bd]Ocultar o Form3 quando ele não for mais preciso.
Form3.Hide;
Application.Run
[*:b3592552bd]O código de TForm3.FormClose pode ser removido.[*:b3592552bd]Deixe o Application.Terminate para quando o programa for terminar
Form3.ShowModal;
Application.Terminate;
[/list:u:b3592552bd]


Responder

Gostei + 0

25/11/2004

Salsa

seguinte massuda .. fiz oq vc disse....

no dpr:

  Application.Initialize;
  Form3 := TForm3.Create(Application);
  Form3.ShowModal;


no form 3 eu dei um Form3.Hide;

ae ele some com o form 3, e abre a splash carrega tudo bunitinho, porem qndo abre o meu programa, ele abre o Form3 denovo....

cheguei a colocar outro .Hide depois do aplication run... como vc pode ver:

 Application.Run;
 Form3.Hide; 



mas ele nao some com o form ... bom ...

outra coisa q notei foi o seguinte....

se eu abro o meu programa ele abre a tela de login certo?
se eu clickar no botao pra dar um

 Application.Terminate;


ele da erro...

porem se eu abroi o programa, clicko no botao de logar, e ao carregar o programa, como ainda aparece a tela de login eu clickar no logoff... ae ele nao da erro.

pq isso?

tipo fiz exatamente oq vc disse e ainda to tendo problemas :(


Responder

Gostei + 0

25/11/2004

Salsa

o problema de q aparecia o form de login qndo abria o programa eu jah arrumei.. soh falta o segundo q eu falei sobre o application.terminated ;)


Responder

Gostei + 0

25/11/2004

Massuda

Devia ter apenas um Application.Terminate e ele devia ser a última coisa dentro do begin..end do seu DPR. Mas vocÊ falou em ´clicar no botão´... onde está o Application.Terminate?


Responder

Gostei + 0

25/11/2004

Salsa

jah ajeitei isso cara... valeuz brigado pelo help :)


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar