Fórum Dúvidas para liberar objeto em memória #339986
06/04/2007
0
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
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
Curtir tópico
+ 0
Responder
Posts
06/04/2007
Robsonselzelin
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);
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);
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)