delphi之面向对象的界面复用技术

delphi之面向对象的界面复用技术

ID:5986644

大小:70.50 KB

页数:13页

时间:2017-12-30

delphi之面向对象的界面复用技术_第1页
delphi之面向对象的界面复用技术_第2页
delphi之面向对象的界面复用技术_第3页
delphi之面向对象的界面复用技术_第4页
delphi之面向对象的界面复用技术_第5页
资源描述:

《delphi之面向对象的界面复用技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Delphi之面向对象的界面复用技术代码复用和界面复用 面向对象的编程思想强调代码的可复用。而Delphi的精髓实际上就是ObjectPascal语言,ObjectPascal语言是一个非常强大的面向对象的编程语言,可以通过对象的继承实现代码复用。同时Delphi作为一个强大的RAD开发工具,不仅可以实现代码复用,还可以实现可视化界面的复用。 基于复制粘贴的界面重用 Delphi最早提出的复用不是面向对象的,而是类似于代码库的重用,比如在执行窗体右键菜单的AddToRepository命令,可以将一些常用的窗体如关于对话框添加到Delp

2、hi的代码库中,以后可以在新建窗体时,直接创建一个完全的一样的对话框。其实这种复用无法是帮助我们简化了复制粘贴的过程而已,会带来很多后续维护的问题,过多的使用这种方式编程,会导致大量重复的代码,大量重复的错误。而现代的编程思想如XP,则认为不允许复制粘贴代码,一旦遇到这种情况,就要进行重构。 可视化窗体继承(VisualFormInheritance) 可视化窗体继承,以下我们简称其为VFI是Delphi2开始出现的一种软件复用技术。允许我们创建一个基类窗体,并从这个基类窗体派生新的窗体。它在标准的以代码重用为目的类继承的基础上实现了对

3、可视化界面元素的重用。让我们做个试验,假设我们现在编写一组系统配置管理界面,为了统计界面样式,规定所有的配置管理界面都应该有一个容器面板,一个确定和一个取消按钮,由于这样的界面非常多,为了界面的统一,我们就来创建这样一个基类界面,首先新建一个项目起名VFI,然后使用File

4、NewForm菜单命令新建一个界面,起名为TBaseOptionDlg,界面示意图如下: 然后下面创建一个派生类窗体,用来配置数据库连接的参数,选择File

5、New…菜单,调出NewItems对话框中,切换到当前的项目VFI下,选中刚才创建的基类BaseOption

6、Dlg,注意在界面的下边inherit的单选框处于选中的状态。点击确定,就会创建一个新的派生配置管理界面了。 可以看到我们的派生类自动就继承了父窗体所有的按钮和面板等界面元素。下面,在主窗体上添加一个数据库连接参数菜单,添加我们的DB参数配置界面,procedureTFormMain.N4Click(Sender:TObject);var AForm:TDBOptionDlg;begin AForm:=TDBOptionDlg.Create(Application); try   AForm.ShowModal; finally   A

7、Form.Free; end;end; 运行一下后,我突然想起来,一般配置管理界面都会有一个默认值的按钮,可以用来恢复默认配置参数的值,而刚才设计界面时忽略了这个问题。打开基类窗体,在窗体上放置一个新的默认设置按钮,保存后。回过头来,可以发现我们的数据库配置界面也神奇增加了一个新的按钮。想像一下,如果你的工程中需要编写几十个配置管理窗体,如果不使用窗体继承的方式来编写的话,在程序已经进入测试阶段时候,客户突然发现上面这个问题,要求修改,那么修改的工作量就会非常大,而且很难保证不会因为疏忽而忘记修改某个配置界面。而使用窗体继承的方式,我们

8、只要修改基类窗体就可以保证修改对所有的派生类都生效。 除了界面继承之外,VFI也可以实现代码继承,在基类窗体的OnCreate事件中显示一个提示信息对话框:procedureTBaseOptionDlg.FormCreate(Sender:TObject);begin ShowMessage('配置参数界面');end; 运行程序后,你会发现虽然我们没有编写派生窗体的OnCreate事件处理过程,但是显示界面时,仍然会弹出消息对话框。 同时,由于窗体的属性通过VFI被共用,可以有效地减少占用的系统资源,比如有时我们可能会在界面上放上一个

9、大的图片进行界面美化,如果这个图片被放在多个界面中,而这些界面之间没有继承关系的话,图片就会被多次编译进资源中,在我们不知不觉中文件大小可能会翻了几倍。而将图片放在基类窗体中,无论图片被多少个子窗体共用,资源都只被编译一次,因此可以极大的减少生成的可执行文件尺寸和加载速度。 VFI窗体属性及代码重载 VFI支持继承,使我们可以重用一些有共性的代码,但是每个界面又有它特性的一面,这可以通过重载来实现。 比如这回我觉得配置管理窗体上面板的颜色有些单调,想调整为淡黄色的,但是我又不确定其它人是否会赞同我的审美眼光,所以我不打算修改基类的窗体面

10、板颜色属性,而只是修改派生的数据库配置界面上面板的颜色为clInfoback,可以看到我们的派生类窗体上面板的颜色变成了淡黄色,但是基类的面板仍然保持不变,也就是说我在子类窗体中对父类窗体的属性进行了重载。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。