Dúvida sobre Form
Sou iniciante em delphi..a duvida eh a seguinte:
Tenho um form principal e através de um Menu, gostaria de ao clicar sobre este abrir um outro form. Coloquei na Procedure--> ´ Form2.Show; ´ , mas não funciona.. O que pode ser? estou no delphi 7
Tenho um form principal e através de um Menu, gostaria de ao clicar sobre este abrir um outro form. Coloquei na Procedure--> ´ Form2.Show; ´ , mas não funciona.. O que pode ser? estou no delphi 7
Ynsor
Curtidas 0
Respostas
Cristiano Alves
26/04/2006
Bom meu amigo há varias maneiras de se criar e abrir um Form. Dependendo da Sua utilização.
Pra começar sempre crie os forms quando for realmente usa-los.
O Delphi por padrão cria todos os forms quando sua aplicação é iniciada.
Pra mudar isso faça o seguinte:
Va em PROJECT/OPTIONS
Todos os form que estão no Auto-Create (Exceto o Form Principal) passe para Avaliable Forms.
Pronto quando quiser abrir um form faça assim:
[b:fc603733d3]1º - Formulários Modais[i:fc603733d3] (quando vc usado ShowModal - significa que nehum form pode ser aberto até que esse seja fechado)[/i:fc603733d3][/b:fc603733d3]
procedure TFMenu1.Clientes1Click(Sender: TObject);
begin
Form2 := TForm2.Create(nil); //Criando form
try
Form2.ShowModal; //Abrindo Form
finally
Form2.release; //Liberando form da memória depois de usado
end;
end;
[b:fc603733d3]2º - Formulários Não Modais[/b:fc603733d3]
procedure TFMenu1.Clientes1Click(Sender: TObject);
begin
Form2 := TForm2.Create(Application);
Form2.Show;
end;
Pra começar sempre crie os forms quando for realmente usa-los.
O Delphi por padrão cria todos os forms quando sua aplicação é iniciada.
Pra mudar isso faça o seguinte:
Va em PROJECT/OPTIONS
Todos os form que estão no Auto-Create (Exceto o Form Principal) passe para Avaliable Forms.
Pronto quando quiser abrir um form faça assim:
[b:fc603733d3]1º - Formulários Modais[i:fc603733d3] (quando vc usado ShowModal - significa que nehum form pode ser aberto até que esse seja fechado)[/i:fc603733d3][/b:fc603733d3]
procedure TFMenu1.Clientes1Click(Sender: TObject);
begin
Form2 := TForm2.Create(nil); //Criando form
try
Form2.ShowModal; //Abrindo Form
finally
Form2.release; //Liberando form da memória depois de usado
end;
end;
[b:fc603733d3]2º - Formulários Não Modais[/b:fc603733d3]
procedure TFMenu1.Clientes1Click(Sender: TObject);
begin
Form2 := TForm2.Create(Application);
Form2.Show;
end;
GOSTEI 0
Paullsoftware
26/04/2006
vc pode tentar assim:
espero ter ajudado :wink:
FormXX := TFormXX.create ( application ); try FormXX.ShowModal finally FormXX.Release; FormXX := nil; end;
espero ter ajudado :wink:
GOSTEI 0
Cristiano Alves
26/04/2006
Paulo
au criar um formulário passando como ´dono´ AOwer Aplication como vc faz, está dizendo ao DELPHI que a APLICAÇÃO será responsável por destruir o Form Até ai tudo bem.
Mas não faz sentido vc logo depois de utilizar destruir
[b:1ca4db7ddd]finally
FormXX.Release;
FormXX := nil;
end;[/b:1ca4db7ddd]
Em outras palavras vc está dando uma ordem ao Aplicativo e em seguida Cumprindo a ordem. (Não se seu fui claro). Isso pode causa Exceçoes na aplicação. E não tenho certeza mas pode comprometer o desempenho.
Sempre que for utilizar forms Modais é uma boa prática cria-los passando como AOwner [b:1ca4db7ddd]NIL[/b:1ca4db7ddd] assim vc está dizendo que [b:1ca4db7ddd]Você[/b:1ca4db7ddd] será o responsável por destruir o [b:1ca4db7ddd]FORM[/b:1ca4db7ddd]
Form1 := TFormXX.create (nil);
try
Form1.ShowModal;
finally
Form1.Release;
end;
au criar um formulário passando como ´dono´ AOwer Aplication como vc faz, está dizendo ao DELPHI que a APLICAÇÃO será responsável por destruir o Form Até ai tudo bem.
Mas não faz sentido vc logo depois de utilizar destruir
[b:1ca4db7ddd]finally
FormXX.Release;
FormXX := nil;
end;[/b:1ca4db7ddd]
Em outras palavras vc está dando uma ordem ao Aplicativo e em seguida Cumprindo a ordem. (Não se seu fui claro). Isso pode causa Exceçoes na aplicação. E não tenho certeza mas pode comprometer o desempenho.
Sempre que for utilizar forms Modais é uma boa prática cria-los passando como AOwner [b:1ca4db7ddd]NIL[/b:1ca4db7ddd] assim vc está dizendo que [b:1ca4db7ddd]Você[/b:1ca4db7ddd] será o responsável por destruir o [b:1ca4db7ddd]FORM[/b:1ca4db7ddd]
Form1 := TFormXX.create (nil);
try
Form1.ShowModal;
finally
Form1.Release;
end;
GOSTEI 0
Paullsoftware
26/04/2006
certo pois eu sempre usei esse código para criar forms...
e nunca deu problema comigo :wink:
try Application.CreateForm(Tformx,Formx); Fromx.ShowModal; Finally Frmx.Release; Fromx:=Nil; end;
e nunca deu problema comigo :wink:
GOSTEI 0
Ynsor
26/04/2006
Não sei bem o q era, mas refiz o Form e deu certo
´ formPrincipal.Show; ´
´ formPrincipal.Show; ´
GOSTEI 0