主窗体代码 procedure TForm1.Button1Click(Sender: TObject); begin //创建tabsheet代码省略 Form2.Show; end;procedure TForm1.DeletePage(); begin Form1.PageControl1.ActivePage.Destroy; Form2.Close; end;子窗体代码 procedure TForm2.FormActivate(Sender: TObject); var i: integer; begin for i:=0 to self.ControlCount-1 do self.Controls[0].Parent := Form1.PageControl1.ActivePage; end;procedure TForm2.Button1Click(Sender: TObject); begin Form1.DeletePage(); end;这样是可以的啊
不能在子窗体中释放主窗体的对象,即使是回调也不行
Form1.Parent的属性设置为tabsheet1;可以这样动态删除。。比如Form1里面有个CLOSE的BUTTON1
button1_click;
begin
self.Parnet.free; //这样就可以了...
end;
因为释放parent时,parent会释放它的所有子控件,所以parent.free肯定出错我已经说了方法了,要释放的话,子窗口PostMessage一个消息到父窗口
父窗口收到消息后释放对应的TabSheet,消息处理的代码到处有,自己找
procedure TForm1.Button1Click(Sender: TObject);
begin
//创建tabsheet代码省略
Form2.Show;
end;procedure TForm1.DeletePage();
begin
Form1.PageControl1.ActivePage.Destroy;
Form2.Close;
end;子窗体代码
procedure TForm2.FormActivate(Sender: TObject);
var
i: integer;
begin
for i:=0 to self.ControlCount-1 do
self.Controls[0].Parent := Form1.PageControl1.ActivePage;
end;procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.DeletePage();
end;这样是可以的啊