Jump to content
Fórum Script Brasil
  • 0

[resolvido] Fechar Um Form


juniorboll
 Share

Question

To com o seguinte problema fiz um form de senha para depois entrar no outro form2, so que eu to querendo que quando conseguir entrar no form2 o form da senha feche, e que não precise voltar nele para fechar o programa, ate consegui fechar ele so que ai quando eu fecho o form2 ele não fecha o programa, parece que fica aberto mas sem aparecer nada...

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0
Guest --Jonas --
To com o seguinte problema fiz um form de senha para depois entrar no outro form2, so que eu to querendo que quando conseguir entrar no form2 o form da senha feche, e que não precise voltar nele para fechar o programa, ate consegui fechar ele so que ai quando eu fecho o form2 ele não fecha o programa, parece que fica aberto mas sem aparecer nada...

Solução bem simples.... se voce usa um menu, no botao ou clausula sair voce coloca

Form2.Close; // form de menu ou outro

Form1.Close; // form de senha

Obs: voce sempre deve fechar do ultimo para o primeiro form se não o programa fica aberto.

Link to comment
Share on other sites

  • 0
To com o seguinte problema fiz um form de senha para depois entrar no outro form2, so que eu to querendo que quando conseguir entrar no form2 o form da senha feche, e que não precise voltar nele para fechar o programa(...)

a solução mais complicada...

O exemplo é um projeto com apenas duas telas (Login e Principal). O código fonte do projeto (em que os forms estão criados em design-time) está assim (para ver o código do projeto, menu View->Project Source):

program Project1;
uses
  Forms,
  Unit1 in 'Unit1.pas' {Login},
  Unit2 in 'Unit2.pas' {Principal};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TLogin, Login);
  Application.CreateForm(TPrincipal, Principal);
  Application.Run;
end.
e deve ser alterado para:
program Project1;
uses
  Forms,
  controls,  // *** para usar a constante mrOK
  Unit1 in 'Unit1.pas' {Login},
  Unit2 in 'Unit2.pas' {Principal};

{$R *.RES}
var
  StartMainForm :Boolean;  // *** para viabilizar a validação

begin
  Application.Initialize;
 // *** criaremos a tela login sem Owner (nil) - isto evita que ela
 // seja assumida como o MainForm da aplicação (Application)
  Login := TLogin.Create(nil);
  try
   // *** se o login for válido, o retorno será mrOk e StartMainForm se tornará TRUE
    StartMainForm := Login.ShowModal = mrOk;
  finally
    Login.Release; // *** após utilizada, a tela de login é eliminada da memória
  end;

  if StartMainForm then  // *** se a senha era válida inicia a aplicação normalmente
  begin
    Application.CreateForm(TPrincipal, Principal);
    Application.Run;
  end else  // *** do contrário, terminamos a aplicação
    Application.Terminate;
end.
Só falta agora, ajustar a tela de login para retornar mrOk para a senha válida. Eu utilizo este form com a propriedade BorderStyle = bsDialog, e com dois botões: - um de confirmação, com a propriedade ModalResult = mrNone (com isto, nada acontece ao pressionarmos ele. Teremos que escrever o evento OnClick); - outro de cancelamento, com a propriedade ModalResult = mrCancel (com isto, ao ser pressionado, a janela será fechada sem que seja necessário colocar qualquer código no evento OnClick dele - como Close, p.ex.); no evento OnClick do botão de confirmação temos o seguinte código:
procedure TLogin.Button1Click(Sender: TObject);
begin
  if MaskEdit1.Text = 'senha' then
    ModalResult := mrOk
  else
    ShowMessage('A senha digitada não confere!');
end;

É complicado apenas explicando, na prática é bem simples.

Abraços

Link to comment
Share on other sites

  • 0
vlw, so mais uma, como eu faço que o form2 apareça antes do form1 sendo que eu não quero colocar o form2 como main form, pois se eu coloca-lo e eu quizer fechar ele, fechara o programa todo...
juniorboll, quem é form1 e quem é form2.

Inicialmente parecia que o form2 seria o seu form principal. Agora, já não parece. :huh:

O que você realmente quer:

a- Mostrar o seu form principal, e antes que alguma coisa possa ser feita nele, seja apresentada a tela de login;

b- Mostrar a tela de login, e após validada, fechá-la e mostrar o form principal; (opção que postei)

Churc, acho que suas pastas no 4share não foram acessadas nos 30 dias requeridos... (os arquivos foram removidos)

Link to comment
Share on other sites

  • 0

Sim era para ser o form2 meu principal so que eu não estava conseguindo fazer o form1 que no caso é o da senha entrar primeiro que o form2 sem que ele seja o principal, desculpe pela confusão...

eu to querendo a opção b mostrar minha tela de login e depois se conseguir entrar fechar ela e abrir o form2 que é o do programa mesmo...

Edited by juniorboll
Link to comment
Share on other sites

  • 0
Churc, acho que suas pastas no 4share não foram acessadas nos 30 dias requeridos... (os arquivos foram removidos)

puts... deletaram mesmo ;\

nunca mais coloco arquivos lá também auhahuahu

então eu tinha feito um exemplo parecido porém mais simples pro Ranilson uma vez

da uma olhada:

http://www.sunsetsolutions.com.br/ranilson/

abraçox

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.4k
×
×
  • Create New...