第六章控件的设计及示例.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章控件的设计及示例

第六章 控件设计示例 第 309 页 第六章 控件设计示例 前面几章已经就面向状态的思想以及C++ Builder 中如何使用面向状态的技术作了 一些介绍,通过阅读前面内容,相信读者已经对C++ Builder 中提供的这种新的编程技 术有所了解。本章将根据前面的内容有针对性的提供一些控件设计的示例,其目的在于示 范如何应用前面所讲的内容,而不在于应用这些控件,因此本章所给的控件都是一些非常 简单,几乎没有使用价值的示范,但通过这些控件的学习可以是读者掌握如何创建控件以 及更好的使用C++ Builder 的这些新的特征。 1 组合控件TPickEdit 所谓组合控件是指有多个控件经过组合形成一个新的控件来完成一些特定的功能,实 际上VCL 的大多数控件都是由多个控件或组件组合而成的,下面给出的TPickEdit 就是 一个由TEdit 和TSpeedButton 组合而成的控件。 这是一个非常简单的控件,最初是一位网友问起如何实现类似MS Office 的Excel 中数据选择功能。Excel 的数据选择如图6.1所示: 图6.1 Excel 中数据拾取窗体 第六章 控件设计示例 第 310 页 “数据区域”输入框是一个带有一个Button 的Edit 输入框,当鼠标点击了右边的 Button 时,整个窗口会缩小成下图的形状,再次点击Button 时,窗体会复原。 图6.2 Excel 中数据拾取窗体缩小状态 熟悉 C++ Builder 的读者都知道,要实现这样的功能非常简单,利用 Form 的 AutoSize,控件的Visible、Align、Top、Left、Height 和Width 等属性按照特 定的顺序设置,同时在程序中需要保存原始的控件位置就可以完成。 但我们知道我们在 Excel 中这样的数据选择框至少有十多处,而且每一个窗体中数 据选择框的数量、位置等都不一样,因此有多处使用到这个功能时,将会出现大量的重复 代码。作一个非常简单的控件来替代重复的代码设计,是一个不错的选择。不仅如此,使 用控件会让代码修改和维护也变得非常简单,使程序的结构也变得更加清晰。我们来看如 何实现。 1.1 控件的分析 要实现这样的功能,最主要的就是这个带有Button 的Edit 选择框,我们将其命名 为TPickEdit,含义是用于拾取数据的,我们来分析如何实现。 n 从表面上看,这个TPickEdit 在Button 接受鼠标的Ckick 事件后缩小,再 次点击时复原,但实际上是反映了TPickEdit 的两个状态:缩小化和复原状态。 这个状态可以使用bool 类型属性Mined 来描述,Mined 为 true 时,父窗体 Form 为缩小化,当Mined 为false 时,父窗体Form 复原。 n 除了点击 Button 的按钮可以使父窗体缩小和复原之外,允许其它条件改变 Mined 属性的状态,比如用户拾取数据后按“回车”键等,因此Mined 属性应 该是发布的属性,是TPickEdit 的一个公共接口。 n 除了Edit 本身的属性以外,TPickEdit包含的 SpeedButton 应该允许用户 指定部分属性,如 OnClick、Graphy、Cusor 等,但 Button 的大部分属性 是不允许用户改变,比如Left、Height、Top 等,这些属性是TPickEdit 根 据自身的状态来调整的,因此,不应该将Button 整体作为TSpeedButton 类 型属性出现,而是将其中部分属性映射到TPickEdit 的属性中。 n 除了上述特征之外,TPickEdit 还需要解决一些辅助性的功能,比如 Edit 框 中字符显示的范围等。 正象前面所说的那样,这个控件其实并没有什么新的东西,只是将一些其它控件的某 些状态联系在一起,共同构成一个新的属性Mined。我们来看一下这个

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档