- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Delphi之面对象的界面复用技术
Delphi之面向对象的界面复用技术代码复用和界面复用
?
面向对象的编程思想强调代码的可复用。而Delphi的精髓实际上就是Object Pascal语言,Object Pascal语言是一个非常强大的面向对象的编程语言,可以通过对象的继承实现代码复用。同时Delphi作为一个强大的RAD开发工具,不仅可以实现代 码复用,还可以实现可视化界面的复用。
?
基于复制粘贴的界面重用
?
Delphi最早提出的复用不是面向对象的,而是类似于代码库的重用,比如在执行窗体右键菜单的Add To Repository命令,可以将一些常用的窗体如关于对话框添加到Delphi的代码库中,以后可以在新建窗体时,直接创建一个完全的一样的对话框。其 实这种复用无法是帮助我们简化了复制粘贴的过程而已,会带来很多后续维护的问题,过多的使用这种方式编程,会导致大量重复的代码,大量重复的错误。而现代 的编程思想如XP,则认为不允许复制粘贴代码,一旦遇到这种情况,就要进行重构。
?
可视化窗体继承(Visual Form Inheritance)
?
可视化窗体继承,以下我们 简称其为VFI是Delphi2开始出现的一种软件复用技术。允许我们创建一个基类窗体,并从这个基类窗体派生新的窗体。它在标准的以代码重用为目的类继 承的基础上实现了对可视化界面元素的重用。让我们做个试验,假设我们现在编写一组系统配置管理界面,为了统计界面样式,规定所有的配置管理界面都应该有一 个容器面板,一个确定和一个取消按钮,由于这样的界面非常多,为了界面的统一,我们就来创建这样一个基类界面,首先新建一个项目起名VFI,然后使用 File | New Form菜单命令新建一个界面,起名为TBaseOptionDlg,界面示意图如下:
?
然后下面创建一个派生类窗 体,用来配置数据库连接的参数,选择 File | New …菜单,调出New Items 对话框中,切换到当前的项目VFI下,选中刚才创建的基类BaseOptionDlg,注意在界面的下边inherit的单选框处于选中的状态。点击确 定,就会创建一个新的派生配置管理界面了。
?
可以看到我们的派生类自动就继承了父窗体所有的按钮和面板等界面元素。下面,在主窗体上添加一个数据库连接参数菜单,添加我们的DB参数配置界面,
procedure TFormMain.N4Click(Sender: TObject);
var
? AForm:TDBOptionDlg;
begin
? AForm:=TDBOptionDlg.Create(Application);
? try
??? AForm.ShowModal;
? finally
??? AForm.Free;
? end;
end;
?
运行一下后,我突然想起 来,一般配置管理界面都会有一个默认值的按钮,可以用来恢复默认配置参数的值,而刚才设计界面时忽略了这个问题。打开基类窗体,在窗体上放置一个新的默认 设置按钮,保存后。回过头来,可以发现我们的数据库配置界面也神奇增加了一个新的按钮。想像一下,如果你的工程中需要编写几十个配置管理窗体,如果不使用 窗体继承的方式来编写的话,在程序已经进入测试阶段时候,客户突然发现上面这个问题,要求修改,那么修改的工作量就会非常大,而且很难保证不会因为疏忽而 忘记修改某个配置界面。而使用窗体继承的方式,我们只要修改基类窗体就可以保证修改对所有的派生类都生效。
?
除了界面继承之外,VFI也可以实现代码继承,在基类窗体的OnCreate事件中显示一个提示信息对话框:
procedure TBaseOptionDlg.FormCreate(Sender: TObject);
begin
? ShowMessage(配置参数界面);
end;
?
运行程序后,你会发现虽然我们没有编写派生窗体的OnCreate事件处理过程,但是显示界面时,仍然会弹出消息对话框。
?
同时,由于窗体的属性通过VFI被共用,可以有效地减 少占用的系统资源,比如有时我们可能会在界面上放上一个大的图片进行界面美化,如果这个图片被放在多个界面中,而这些界面之间没有继承关系的话,图片就会 被多次编译进资源中,在我们不知不觉中文件大小可能会翻了几倍。而将图片放在基类窗体中,无论图片被多少个子窗体共用,资源都只被编译一次,因此可以极大 的减少生成的可执行文件尺寸和加载速度。
?
VFI窗体属性及代码重载
?
VFI支持继承,使我们可以重用一些有共性的代码,但是每个界面又有它特性的一面,这可以通过重载来实现。
?
比如这回我觉得配置管理窗 体上面板的颜色有些单调,想调整为淡黄色的,但是我又不确定其它人是否会赞同我的审美眼光,所以我不打算修改基类的窗体面板颜色属性,而只是修改派生的数 据库
您可能关注的文档
- D-二聚体与纤维白原在冠心病中的临床意义.doc
- D111103003毕业论文格式管理过程表格.doc
- D665型先导式流量电液伺服比例阀动态响应仿真分析.doc
- D01084C03 消防设备管理作业办法(B版2次).doc
- Dalsa-Giie相机二次开发步骤.doc
- Daisy1018半自动三坐标测量机.doc
- Data Minng常用词汇表-中英文.docx
- DAUME球阀样资料DAUME控制阀样本资料.doc
- DAVID 3D光扫描仪--说明书(中文版).doc
- DB 31-38-2007 上海市地方标准 锅炉大气污染物排放标准.doc
- 基于人工智能的跨学科教师培训课程评估体系构建与实施研究教学研究课题报告.docx
- 高中生对AI战争责任伦理的反思能力培养课题报告教学研究课题报告.docx
- 数字教育资源在终身学习体系中的应用与推广教学研究课题报告.docx
- 自然语言处理在小学作文教学中的应用实验课题报告教学研究课题报告.docx
- 初中数学教师教学画像构建与深度学习模型优化方法在数字化教学中的应用教学研究课题报告.docx
- 小学信息技术教学中人工智能启蒙与计算思维发展的实践课题报告教学研究课题报告.docx
- 2025年植物基饮料生产线升级与成本控制措施报告.docx
- 2025年新能源汽车换电运营成本趋势与盈利模式突破策略.docx
- 2025年母婴用品行业高端化趋势下细分品类增长用户洞察报告.docx
- 教师教学画像视角下的初中英语教学改进策略与实施研究教学研究课题报告.docx
最近下载
- 小学语文二年级上册课件 《大禹治水》第一课时.ppt VIP
- 解读《GB_T 33761-2024绿色产品评价通则》全面解读.docx VIP
- DB62_T 5135-2025 建设项目环境影响评价 碳排放.docx VIP
- DB62T 3064-2024 绿色建筑评价标准.pdf VIP
- DB62_T 2825-2025 川贝母栽培技术规程.docx VIP
- 小学语文二年级上册课件 《大禹治水》第二课时.ppt VIP
- DB62T 2968-2019 雷电灾害鉴定技术规范.pdf VIP
- DB62T 4894-2024 花椒农业气象观测规范.docx VIP
- DB62T 4899-2024 梨品种 早玉DB62T 4899-2024 梨品种 早玉.docx VIP
- 新疆交投集团招聘笔试真题2024.docx VIP
原创力文档


文档评论(0)