PageControl页面删除问题!

newabby 2006-08-28 04:19:30
一个主窗体里,里面放了一个PageControl,动态生成Page,然后打开窗体A时,把parent都设为PageControl中Page的parent,现在窗体A中有一个关闭按扭,在关闭的时候我想顺想删除刚刚生成的那个Page,要怎么做呢?

我在主窗体里添加了一个 全局的函数 DeletePage,然后在窗体A中调用,但是出现abstract error,我要怎么处理呢?
...全文
543 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
erhan 2006-08-29
  • 打赏
  • 举报
回复
主窗体代码
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;

这样是可以的啊
ysai 2006-08-28
  • 打赏
  • 举报
回复
不要试图在控件的事件里释放自身
因为释放parent时,parent会释放它的所有子控件,所以parent.free肯定出错

我已经说了方法了,要释放的话,子窗口PostMessage一个消息到父窗口
父窗口收到消息后释放对应的TabSheet,消息处理的代码到处有,自己找
newabby 2006-08-28
  • 打赏
  • 举报
回复
self.Parnet.free 也是不错哦,还是会出错,

Project xxxx raised exception class yyyyy with message 'zzzzzz'.

Process stopped. Use Step or Run to continue.
GARNETT2183 2006-08-28
  • 打赏
  • 举报
回复
比如:你动态成PageControl组件的tabsheet1和一个Form1,并把
Form1.Parent的属性设置为tabsheet1;

可以这样动态删除。。比如Form1里面有个CLOSE的BUTTON1
button1_click;
begin
self.Parnet.free; //这样就可以了...
end;
yinxu 2006-08-28
  • 打赏
  • 举报
回复
不要这样做,DELPHI已经为我们提供了DOCKING的支持,为什么不用呢!DELPHI的DEMOS下面有一个Docking的例子,请查考!
newabby 2006-08-28
  • 打赏
  • 举报
回复
我不是太明白,楼上的能否讲得详细点,有没有解决办法?
ysai 2006-08-28
  • 打赏
  • 举报
回复
子窗体向主窗体PostMessage,主窗体响应消息删除对应的TabSheet
不能在子窗体中释放主窗体的对象,即使是回调也不行

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧