rotina genérica para criação de Forms em tpo. de execução
//unit sem form - criada para armazenam,ento das rotinas genéricas utilitarios do prg.
Por favor, vendo os comentarios abaixo, me ajudem (quem souber e quiser) a montar uma rotina genérica e publica para criação dinâmica de Forms...
neste mesmo contexto, se der certpo vou criar uma generica para liberar um form...
VEJA ABAIXO :
A rotina deve ser chamada do Form principal (ou outro) apenas fazendo-se referencia:
UUtil.CriaForm(nome_do_formulario);
mas
não consigo compilar porque o tipo definido para o parametro não e aceito.
unit UUtil;
interface
//declarei aqui o cabeçalho da procedure mas não sei se é certo !???
procedure CriaForm(form1: TForm);
implementation
// procedure para criação dos forms recebendo por parâmetro onome do form...
procedure CriaForm(form1: TForm);
Begin
//testa se o Form existe...
if form1 = nil then
begin
try
Application.CreateForm(Tform1, form1);
form1.showModal;
finally
form1.Release;
//não sei se o nil libera a memoria ...ou uso o destroy??
form1 := nil;
end;
end;
End;
end.
Por favor, vendo os comentarios abaixo, me ajudem (quem souber e quiser) a montar uma rotina genérica e publica para criação dinâmica de Forms...
neste mesmo contexto, se der certpo vou criar uma generica para liberar um form...
VEJA ABAIXO :
A rotina deve ser chamada do Form principal (ou outro) apenas fazendo-se referencia:
UUtil.CriaForm(nome_do_formulario);
mas
não consigo compilar porque o tipo definido para o parametro não e aceito.
unit UUtil;
interface
//declarei aqui o cabeçalho da procedure mas não sei se é certo !???
procedure CriaForm(form1: TForm);
implementation
// procedure para criação dos forms recebendo por parâmetro onome do form...
procedure CriaForm(form1: TForm);
Begin
//testa se o Form existe...
if form1 = nil then
begin
try
Application.CreateForm(Tform1, form1);
form1.showModal;
finally
form1.Release;
//não sei se o nil libera a memoria ...ou uso o destroy??
form1 := nil;
end;
end;
End;
end.
Rcastro
Curtidas 0
Respostas
Fer_nanda
13/05/2004
dah uma olhada nesse tópico
http://delphiforum.icft.com.br/forum/viewtopic.php?t=43084&highlight=criar+form
http://delphiforum.icft.com.br/forum/viewtopic.php?t=43084&highlight=criar+form
GOSTEI 0
Cabelo
13/05/2004
Cara Colega
Na seção uses da UNIT UUtils, está declarado a unit FORMS, se não estiver coloque e compile e vê se dá certo, no caso de testar o form, use assim
if not assigned(form1) then
begin
try
form1 := TForm.Create(application);
form1.showmodal;
end
else
begin
messagedlg(´Este form já existe!´, mterror, [mbOk], 0);
end;
finally
form1.Release;
espero ter ajudado, qualquer outra dúvida me mande um e-mail para cabelo.uni@uol.com.br
//quando vc dá um release vc já libeoru a memória..
Na seção uses da UNIT UUtils, está declarado a unit FORMS, se não estiver coloque e compile e vê se dá certo, no caso de testar o form, use assim
if not assigned(form1) then
begin
try
form1 := TForm.Create(application);
form1.showmodal;
end
else
begin
messagedlg(´Este form já existe!´, mterror, [mbOk], 0);
end;
finally
form1.Release;
espero ter ajudado, qualquer outra dúvida me mande um e-mail para cabelo.uni@uol.com.br
//quando vc dá um release vc já libeoru a memória..
GOSTEI 0
Rômulo Barros
13/05/2004
caro amigo rcastro.. Já passei pelo que vc está passando agora e consegui criar uma rotina genérica para criação de Forms em RunTime.
Segue:
[size=18:592e472dc5]OBS: Não esqueça de mandar usar a biblioteca Clases [color=red:592e472dc5](Uses Classes);[/color:592e472dc5][/size:592e472dc5]
Exemplo: (Vamos supor que temos um formulário chamado FormCadCliente), então:
Segue:
[size=18:592e472dc5]OBS: Não esqueça de mandar usar a biblioteca Clases [color=red:592e472dc5](Uses Classes);[/color:592e472dc5][/size:592e472dc5]
procedure TUnitFuncoes.ChamarTela(parForm: Tform; parInstance: TComponentClass; parMsg: String); begin Application.CreateForm(parInstance,parForm); parForm.Caption := parMsg; Try parForm.ShowModal; Finally parForm.Release; parForm := Nil; End; end;
Exemplo: (Vamos supor que temos um formulário chamado FormCadCliente), então:
ChamarTela(FormCadCliente,TFormCadCliente);
GOSTEI 0
Rcastro
13/05/2004
O código abaixo não é mérito meu mas do mestre Laercio, a quem a gradeço.
O exemplo apenas complementa a contribuição legal dos colegas deforum...
grata.
procedure TFrmDM.CriaFormulario(TFormulario: TFormClass;
Formulario: TForm);
begin
Try
Application.CreateForm(TFormulario, Formulario);
Formulario.ShowModal;
Finally
Formulario.Free;
End
end;
O exemplo apenas complementa a contribuição legal dos colegas deforum...
grata.
procedure TFrmDM.CriaFormulario(TFormulario: TFormClass;
Formulario: TForm);
begin
Try
Application.CreateForm(TFormulario, Formulario);
Formulario.ShowModal;
Finally
Formulario.Free;
End
end;
GOSTEI 0
Rômulo Barros
13/05/2004
O código abaixo não é mérito meu mas do mestre Laercio, a quem a gradeço.
O exemplo apenas complementa a contribuição legal dos colegas deforum...
grata.
procedure TFrmDM.CriaFormulario(TFormulario: TFormClass;
Formulario: TForm);
begin
Try
Application.CreateForm(TFormulario, Formulario);
Formulario.ShowModal;
Finally
Formulario.Free;
End
end;
Engraçado !! Sobe
GOSTEI 0