社区
Delphi
帖子详情
在以模式窗口方式显示的窗口中动态创建控件后再free时,报"abstract error"错误,请问怎么解决?
DumDum
2008-06-11 08:45:44
在以模式窗口方式显示的窗口中动态创建控件后再free时,报"abstract error"错误,请问怎么解决?
例示我的form1窗口以ShowModal方式显示,然后在窗口上创建panel,并在panel上再创建一个button,然后点击button后把panel 给free掉,上时就会报“abstract error"错误,为什么会这样,有什么办法解决吗?
...全文
137
14
打赏
收藏
在以模式窗口方式显示的窗口中动态创建控件后再free时,报"abstract error"错误,请问怎么解决?
在以模式窗口方式显示的窗口中动态创建控件后再free时,报"abstract error"错误,请问怎么解决? 例示我的form1窗口以ShowModal方式显示,然后在窗口上创建panel,并在panel上再创建一个button,然后点击button后把panel 给free掉,上时就会报“abstract error"错误,为什么会这样,有什么办法解决吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
DumDum
2008-06-11
打赏
举报
回复
OK,明白了~~!
ysai
2008-06-11
打赏
举报
回复
真要释放,不要用free方法,而用postmessage((sender as tbutton).Parent.handle, WM_CLOSE ,0, 0);
ysai
2008-06-11
打赏
举报
回复
和这个帖子里的问题一样
http://topic.csdn.net/u/20080522/14/5f2e8cce-0c76-46d5-9f69-f9147d9f9f94.html
请看Free方法的帮助:
Warning: Never explicitly free a component within one of its own event handlers or the event handler of a component it owns or contains. For example, don't free a button, or the form that owns the button, in its OnClick event handler.
不要试图在控件的事件中释放自身.
在Button.OnClick中释放它的Parent会把自己也释放了,违反了这个规则
DumDum
2008-06-11
打赏
举报
回复
能在D6中解决吗?公司是用D6做开发的
wywry
2008-06-11
打赏
举报
回复
到这个网站下载个D7或D2007的精简版,D7最小才5M
http://bbs.yd153.com/index.asp?boardid=25
DumDum
2008-06-11
打赏
举报
回复
是delphi 6版本,其他的就不清楚了,是公司别人安装的~~!
ZyxIp
2008-06-11
打赏
举报
回复
楼主你用的版本是火星版的吧。
DumDum
2008-06-11
打赏
举报
回复
Form1要以showmodal方式显示,并且把showmodal结果返回给调用窗口~~!
DumDum
2008-06-11
打赏
举报
回复
Form1要以showmodal方式显示的~~!
wywry
2008-06-11
打赏
举报
回复
我在D2007下调试你的代码,没有问题啊
ZyxIp
2008-06-11
打赏
举报
回复
这样子不会出错啊!!!
DumDum
2008-06-11
打赏
举报
回复
这个还没有说清楚?
就是form1用showmodal方式显示以后,窗口上动态创建一个panel和一个button,点击button后把panel.free;
下面是form1的代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Panel1: TPanel;
Button2: TButton;
procedure ButtonClick(sender:TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ButtonClick(sender:TObject);
begin
if tbutton(sender).Parent.ClassType = tpanel then
(sender as tbutton).Parent.Free ;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Panel1:=TPanel.Create(nil) ;
Panel1.Parent := self;
Panel1.Top := 50;
Panel1.Left :=50;
Panel1.Width := 200;
Panel1.Height := 150;
Button2:=TButton.Create(nil);
Button2.Parent := Panel1;
Button2.OnClick:=ButtonClick ;
end;
end.
ZyxIp
2008-06-11
打赏
举报
回复
你没有说清楚.
7年
2008-06-11
打赏
举报
回复
是因为button1的parent没了吧
Delphi
abstract
error
异常
本文记录了一个项目
中
遇到的抽象
错误
及释放对象异常问题。通过逐步删除对象的方法定位到了问题根源——Razie
控件
,并发现升级版本不兼容导致异常。将Razie版本降级后问题得到
解决
。
WeCenter 3.1.9
报
错An
error
occurred (500
Error
)
博客介绍了WeCenter 3.1.9
报
错An
error
occurred (500
Error
)的情况。通过调试
窗口
可知
报
错信息,
错误
根源是Zend_Db/Table/
Abstract
.php文件第1307行函数接收无效参数,PHP 7.4会引发致命
错误
。
解决
办法是对该文件修改,使用函数前先进行参数类型检查。
Error
:invalid new-expression of
abstract
class type原因及
解决
本文探讨了在使用新对象
时
遇到'invalid new-expression of
abstract
class type'
错误
的原因,即子类未完全实现父类的纯虚函数。
解决
办法在于删除未实现的函数或在子类
中
补充实现。
Abstract
Error
这是一个什么错
本文通过一个具体的示例,解释了在程序运行
时
出现抽象
错误
(
Abstract
Error
)的原因,即调用了未实现的纯虚函数。并通过对比两种不同类的使用
方式
,提供了避免此类
错误
的方法。
error
: allocating an object of
abstract
class type
本文探讨了在使用Qt
时
遇到的
错误
:
error
: allocating an object of
abstract
class type。通常,此类
错误
源于抽象类
中
有未实现的虚函数。文章详细解释了如何识别并
解决
这个问题,确保代码的正确性和效率。
Delphi
5,943
社区成员
262,943
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章