![]() |
|
||||||||||||||
| | 网站首页 | 技术教程 | 网站开发 | 程序下载 | 言情小说 | 法律咨询 | Firefox | 两性故事 | 健康知识 | 网络游戏 | 免费论文 | | ||
|
||
|
|||||
| 改变VCL的行为--一个使用可视化元件的实例 | |||||
|
这可能实现吗?秘密在于在控件之前抢先截获Windows消息。这可以通过使用一个叫做WindowProc的TControl属性来实现,这个属性实质上指向控件的Windows消息事件处理器(event handler)。 为了展示这一技术,我们将创建一个LinkedLabel控件,可以将它连接到任何TControl控件并且动态改变它的行为。TLinkedLabel由TLabel继承而来,附加4个公开的属性: Associate —— 将被改变行为的相连控件 CapsLock —— 当这个Boolean属性被设置为True时,特定类型的控件将把小写键盘输入作为大写来处理。这个属性并不对所有控件有效,因为并不是所有的控件都以相同的方式相应WM_CHAR消息。经测试Edit,MaskEdit,Memo,和RichEdit控件都对CapsLock属性有响应,但是ComboBox则不响应。很明显,CapsLock属性对于很多其他控件(如Button、CheckBox等)只有很小的影响,或者没有影响。 Gap —— LinkedLabel与相连控件的距离 OnTop —— 这个Boolean属性决定LinkedLabel出现在相连控件的左侧还是顶端。 另外,TlinkedLabel将保持自身和相连控件的Enabled和Visible属性相一致。它也会保持自身和相连控件的距离和角度,也就是说,当你移动LinkedLabel时,其关联也会随之移动,反之亦然。 我们来看一下TLinkedLabel类的声明,如图1所示。 unit LinkedLabel; interface uses type 现在让我们来仔细看看这个控件中的不同方法,先由构造器(constructor)开始。首先说明一下,当创建一个新对象时,与它相关联的所有内存都被清空。这个动作将会自动把Fassociate和FoldWinProc设置为nil,将FcapsLock、FonTop、Fupdating设置为False。所有这些都不需要在构造器中明确的初始化它们。因此,唯一需要我们在构造器中设置的就是Gap的默认值。 constructor TLinkedLabel.Create(AOwner: TComponent); |
|||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| DELPHI:利用INI文件实现界面… 巧用日期转换函数验证用户输… 在Delphi 7 中用Indy开发Soc… 在Delphi中用ADSI创建IIS的虚… 在DELPHI程序中拨号上网 在Delphi中侦测剪贴板的变化 用Delphi 开发数据库程序经验… Delphi实现远程屏幕抓取 怎样用delphi制作一个IPhunt… TWebBrowserTWebBrowser与MS… |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 网站地图 | Baidu News | Google Map | | |||
|