Delphi中如何将响应TWinControl的OnResize事件

有一个类,其中一个成员是FContainer:TWinControl,保持对外界某一个控件的引用,需要响应这个FContainer成员的OnResize事件。问题是OnR... 有一个类,其中一个成员是FContainer: TWinControl ,保持对外界某一个控件的引用,需要响应这个FContainer成员的OnResize事件。
问题是 OnResize 事件对TWinControl来说是 protected 属性的,无法获取到。
如果要是用判断 FContainer 的具体类型方法
if FContainer is TForm then
.....
else if FContainer is TPanel then
....
else if FContainer is XXX then
....
end;
是没有办法穷举的,可能FContainer引用的是一个自定义的从TControl集成下来的对象呢。

这种情况如何才能优雅的获得 FContainer.OnResize 事件的响应呢。
要给这个OnResize事件赋值。如何赋值呢。

TWinControl是Delphi中的类,难道要改Delphi的代码吗?

去改TControl的代码当然可以了,问题这不是解决方法啊。TControl是Delphi的代码,把代码给别人的时候总不能把TControl.pas带着吧。
展开
 我来答
tevistang
2010-07-28 · TA获得超过504个赞
知道小有建树答主
回答量:662
采纳率:0%
帮助的人:458万
展开全部
没看明白,你是要把事件公开出来,还是要去捕获消息呢?
如果是第1个,就直接把事件public就行了,第2个,就覆盖WndProc然后捕获消息

glaciersoft 说的是一个办法。另外LZ的OOP看来很不咋样啊,给你个小例子吧

TParent = class
protect
FMyEvent: TNotifyEvent;
property OnMyEvent: TNotifyEvent read FMyEvent write FMyEvent;
end;

TChild = class(TParent)
public
property OnMyEvent;
end;

这下LZ该知道怎么做了吧。其实都是DELPHI里现成代码,多看看VCL的代码就知知道了

晕,谁让你去改VCL代码了!这么简单个问题都还不明白,加我吧563 85 501,这30分挣得可真不容易
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
glaciersoft
2010-07-27 · TA获得超过288个赞
知道小有建树答主
回答量:340
采纳率:0%
帮助的人:329万
展开全部
TControlCrack=class(TWinControl);

TControlCrack(Control).OnResize:=xxxxxxxx;

这样用,可以使用TWinControl protected区域的任何东西
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式