[resolvido] Fechar Um Form - Delphi, Kylix - Fórum Script Brasil
[resolvido] Fechar Um Form
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.
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):
Unit1 in 'Unit1.pas' {Login},
Unit2 in 'Unit2.pas' {Principal};
Application.CreateForm(TLogin, Login);
Application.CreateForm(TPrincipal, Principal);
e deve ser alterado para:
controls,  // *** para usar a constante mrOK
StartMainForm :Boolean;  // *** para viabilizar a validação
// *** criaremos a tela login sem Owner (nil) - isto evita que ela
// seja assumida como o MainForm da aplicação (Application)
Login := TLogin.Create(nil);
// *** se o login for válido, o retorno será mrOk e StartMainForm se tornará TRUE
StartMainForm := Login.ShowModal = mrOk;
Login.Release; // *** após utilizada, a tela de login é eliminada da memória
if StartMainForm then  // *** se a senha era válida inicia a aplicação normalmente
end else  // *** do contrário, terminamos a aplicação
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:
if MaskEdit1.Text = 'senha' then
ShowMessage('A senha digitada não confere!');
É complicado apenas explicando, na prática é bem simples.
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...
da uma olhada neste exemplo também
http://www.4shared.com/file/15912925/3283b03d/Login.html
ps: no fonte não esquecer de olhar o "Project > View Source"
churc não to conseguindo baixar desse site que você me mandou, da uma olhada fazendo o favor...
juniorboll, quem é form1 e quem é form2.
Inicialmente parecia que o form2 seria o seu form principal. Agora, já não parece. :huh:
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)
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...