如何在delphi中释放动态创建的框架,其中mainform中的面板是父框架

时间:2017-07-23 22:17:30

标签: delphi

我有一个主表格和一个框架。我已经动态地将框架放在窗体上,并将框架的父级设置为窗体上的面板。

当我尝试通过框架上的按钮释放框架时,使用self.free,此后我收到访问冲突错误。

我是初学程序员,我想知道如何从内存中释放帧而不会出现访问冲突错误。

1 个答案:

答案 0 :(得分:-2)

如果您想自己控制帧生命周期,请在构建时将所有者设置为nil。然后,您有责任以后释放它。但是,Button1不应该在框架上。

procedure TForm1.CreateFrame;
begin
  FFrame := TYourFrameClass.Create(nil);  // Onwer is nil (you are responsible for its descruction)
  FFrame.Parent := Self.Panel1;           // Parent is Panel1 on form (Self = TForm1 instance)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  FFrame.Free;    // FFrame is a property of TForm1 which points to your dynamically created frame
end;