我想要一个自定义的StringGrid元素。 我创建了一个类:
type
TClassStringGrid = class(TCustomControl)
...
与
constructor TClassStringGrid.Create(AOwner: TForm);
begin
inherited Create(nil);
myGroupBox1 := TGroupBox.Create(AOwner);
myGroupBox1.Parent := AOwner;
myStringGrid1 := TStringGrid.Create(self);
myStringGrid1.Parent := myGroupBox1;
myStringGrid1.Options := myStringGrid1.Options + [goEditing];
end;
destructor TClassStringGrid.Destroy;
begin
if myStringGrid1 <> nil then begin
FreeAndNil(myStringGrid1);
end;
if myGroupBox1 <> nil then begin
DestroyComponents;
FreeAndNil(myGroupBox1);
end;
// Call the parent class destructor
inherited;
end;
我在Form1中创建了一个类并显示它。有用。但是如果我将一些值放入StringGrid(Form1)然后尝试关闭Form1,我会得到一个异常&#34;该元素没有父窗口&#34;在FreeAndNil(myStringGrid1);
。
毁灭有什么不对?
感谢您提供给我的任何信息。
答案 0 :(得分:1)
假设您要在此控件的“组”框中显示“字符串”网格,那么它应该是这样的:
shell.receive
以这种方式,您新设计的控件是子控件的所有者和父级。因此,销毁是自动完成的。