Dúvidas para liberar objeto em memória

Delphi

06/04/2007

Pessoal

Um form que quando carrego ele é do tipo fsMDIChild. Como poderia para liberar da memória, após o uso dele ??
Pergunto isso porque quando estou em outra tela, eu carrego ele dessa forma:

if Key = VK_F9 then
begin
// Verifica se o foco está em Fornecedor
if edFornecedor.Focused then
begin
if FrmGps1100 = nil then
// Carrega o cadastro de Clientes Fornecedores
Application.Createform(TFrmGPs1100, FrmGps1100)
else
FrmGps1100.BringToFront;
end

Porém após fechar o form Frmgps1100 ´ Clientes/Fornecedores´ e tentar abrir o form outra vez ele dá um erro e para ele não é nil executando a linha FrmGps1100.BringToFront;

Estou usando o Delphi 7

Aguardo retorno

Rogério


Rogeranalista

Rogeranalista

Curtidas 0

Respostas

Robsonselzelin

Robsonselzelin

06/04/2007

No evento OnClose do seu form fsMDIChild, coloque o código:

Action := caFree;

Para cria-lo, utilize o seguinte método:

procedure criarMDIChild(myFormClass: TFormClass; myForm: TForm);
var i: Integer;
begin
try
Screen.Cursor := crHourGlass;
for i := 0 to Application.MainForm.MDIChildCount - 1 do
if myFormClass.ClassName = Application.MainForm.MDIChildren[i].ClassName then begin
myForm := Application.MainForm.MDIChildren[i];
Break;
end;
if myForm = nil then begin
Application.CreateForm(myFormClass, myForm);
myForm.Show;
end else
myForm.BringToFront;
finally
Screen.Cursor := crDefault;
end;
end;

Da seguinte maneira:

criarMDIChild(TFrmGps1100, FrmGps1100);


GOSTEI 0
POSTAR