Fórum Criando Form #483293

22/06/2014

0

Eu pretendo criar um programa com dois Form Applications, o primeiro que eu desejo que abra ao executar o programa, serve apenas para verificação, eu quero que após o usuário
inserir a senha correta, esse formulário seja fechado e que abra o segundo formulário, eu criei dois componentes no primeiro formulário, um Button e um Edit, e no OnClick do
botão eu implementei o seguinte:

procedure TForm2.Button1Click(Sender: TObject);
var senha:string;
begin
senha:= Edit1.Text;
if senha='admin' then
begin
ShowMessage('Senha correta');
TForm3.Create(self);
end;
end;

Eu coloquei senha admin apenas para facilitar o entendimento, o algoritmo completo é consideravelmente mais complicado, o compilador não da erro e o programa é executado
normalmente, mas quando eu digito a senha e clico no botão, ele não fecha o Form2 e abre o Form3. Qual seria o melhor comando para o caso citado?
Obrigado
Andrew Vargas

Andrew Vargas

Responder

Post mais votado

24/06/2014

Lucas Mees, agradeço pela ajuda, mas isso é apenas uma parte, os comandos que você disponibilizou não me ajudaram na criação do segundo form.
Valeu mesmo assim, eu reimplementei o código com suas dicas e ainda criei mais uma procedure unicamente para abertura do segundo Form, segue ai:

procedure abre_form();
begin
form3.Create(application);
end;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var senha:string;
begin
senha:= Edit1.Text;
if senha='admin' then
begin
ShowMessage('Senha correta');
TForm3.Create(self);
close;
end;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
abre_form();
FreeAndNil(Form2);
Form2.Hide; //esconde o form
Form2.Destroy; //como o nome diz ele destoi
end;
end.

use o freeandnill depois do hide e tire o destroy apenas utilise o freeandnill
vc n precisa usar 1 procedure para isso.

Lucas Mees

Lucas Mees
Responder

Gostei + 1

Mais Posts

22/06/2014

Lucas Mees

no evento OnClose vc pode colocar

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Form1.Hide;        //esconde o form
  Form1.Destroy;  //como o nome diz ele destoi
end;


e de uma olhada no FreeAndNill para tira-lo da memória
Responder

Gostei + 0

23/06/2014

Andrew Vargas

Lucas Mees, agradeço pela ajuda, mas isso é apenas uma parte, os comandos que você disponibilizou não me ajudaram na criação do segundo form.
Valeu mesmo assim, eu reimplementei o código com suas dicas e ainda criei mais uma procedure unicamente para abertura do segundo Form, segue ai:

procedure abre_form();
begin
form3.Create(application);
end;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var senha:string;
begin
senha:= Edit1.Text;
if senha='admin' then
begin
ShowMessage('Senha correta');
TForm3.Create(self);
close;
end;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
abre_form();
FreeAndNil(Form2);
Form2.Hide; //esconde o form
Form2.Destroy; //como o nome diz ele destoi
end;
end.
Responder

Gostei + 0

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

Aceitar