社区
VCL组件使用和开发
帖子详情
如何在VCL中增加事件,当Visible改变时触发该事件?
Jim3
2003-01-15 05:52:47
我想在VCL中增加一个事件,当Visible改变时触发该事件
可是SetVisible和GetVisible都是private,无法改写
能不能增加一个同名同类型的属性替代原来的Visible呢?
...全文
35
9
打赏
收藏
如何在VCL中增加事件,当Visible改变时触发该事件?
我想在VCL中增加一个事件,当Visible改变时触发该事件 可是SetVisible和GetVisible都是private,无法改写 能不能增加一个同名同类型的属性替代原来的Visible呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jim3
2003-01-15
打赏
举报
回复
谢谢
Jim3
2003-01-15
打赏
举报
回复
用RequestAlign也可以,加个判断就可以了,只是没有拦截消息那么有效率
jishiping
2003-01-15
打赏
举报
回复
就是重载WndProc这个函数。
void __fastcall MyControl::WndProc(TMessage& Msg)
{
TControl::WndProc(Msg); //这儿假设从TControl派生
if (Msg.Msg==CM_VISIBLECHANGED) {
//调用你自己写的事件函数
}
}
jishiping
2003-01-15
打赏
举报
回复
我又看了一下,还是拦截消息CM_VISIBLECHANGED比较好。如果重载RequestAlign的话,除了SetVisible会调用RequestAlign外,其它地方也会调用RequestAlign。怎么拦截消息CM_VISIBLECHANGED,就不用我说了吧。
Jim3
2003-01-15
打赏
举报
回复
呵呵,我看到了
谢谢啦!
另外,拦截消息就是改写消息处理函数吧?
jishiping
2003-01-15
打赏
举报
回复
是看controls.pas得来的。
procedure TControl.SetVisible(Value: Boolean);
begin
if FVisible <> Value then
begin
VisibleChanging;
FVisible := Value;
Perform(CM_VISIBLECHANGED, Ord(Value), 0);
RequestAlign; //RequestAlign是虚拟函数
end;
end;
Jim3
2003-01-15
打赏
举报
回复
谢谢
RequestAlign()和Visible有什么关系?
哪里有这方面的知识?
是看controls.pas得来的么?
jishiping
2003-01-15
打赏
举报
回复
void __fastcall MyControl::RequestAlign()
{
TControl::RequestAlign(); //这儿假设从TControl派生
//调用你自己写的事件函数
}
jishiping
2003-01-15
打赏
举报
回复
拦截消息CM_VISIBLECHANGED,或者重载RequestAlign函数。注意重载函数时,需要调用原来的RequestAlign函数。
娃娃鸭深入核心
VCL
架构剖析(李维)笔记
VCL
Framework与消息29、
VCL
Framework窗口消息
VCL
Framework提供的窗口消息封装机制必须解决下面的问题:1.如何把窗口消息正确分派到发生的窗口和控件
中
?2.窗口消息如何分派给封装控件的
VCL
封装类? ...
如何把FastReport
VCL
6
中
的数据组生成直观图表
在文章“如何在FastReport
VCL
6
中
的数据组标题
中
显示总计”
中
,我们研究了如何使用Processing属性作为“Text”对象。但是,该属性对于其他对象也很典型:图表、量表和条形码。今天,我们将着眼于在Chart对象的上...
VCL
控件分类
在一个头文件
中
添加另一个头文件(File|Use Unit) new TForm2(this); (this: 指以此为容器) ShowModal(),Show(); (是否当前窗体关闭后才能操作父窗体:模态方式,非模态方式) Close(); (关闭窗体) (在Eve
由
VCL
代码理解
VCL
的消息机制
由
VCL
代码理解
VCL
的消息机制(转贴)Delphi,一个非常优秀的开发...既然大家都知道了,不浪费口水了 ^_^)说到
VCL
的优秀就不能不提到其对Windows消息及API的较全面和完美的封装,正因为如此开发者在大多数情况下甚至不需
VCL
组件属性和方法详解
如果没有
改变
在选项
中
的图标,那么当用户在Shell
中
查看
时
,可以为自己的应用程序获得缺少的“火炬”图标。 例子: procedure TForm1.FormCreate(Sender:TObject); begin //Set the application icon ...
VCL组件使用和开发
604
社区成员
13,460
社区内容
发帖
与我相关
我的任务
VCL组件使用和开发
C++ Builder VCL组件使用和开发
复制链接
扫一扫
分享
社区描述
C++ Builder VCL组件使用和开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章