统一项目中的编辑、查找与打印
在许多的C/S程序中都会提供对数据库中的数据进行编辑、查询和打印的功能。以往的做法是针对不同的数据表分别制作编辑、查询和打印窗体,每个窗体都是全新的。我们会在项目的多个地方嗅到“代码重复”的味道,使得日后代码的维护和修改变得很艰难。如果是多人合作的项目,这可能会更糟,因为可能每个对程序员可能会针对编辑、查询和打印提供不同的接口方法。
针对以上的问题,我在曾经做过的项目中做了一些调整,现整理出来与大家共分享。
鉴于数据编辑、查询和打印功能会在每个数据窗体中出现,如“订单窗体”、“入库单窗体”、“采购单窗体”等等,故将其做统一规划。考虑对数据库的编辑、查询和打印一般是使用弹出式对话框的形式,故在项目中定义了一个对话框窗体类TDialogForm,该类统一初始化窗体字体、大小和显示位置,并提供了一个抽象方法Execute来供外部调用。编辑、查询和打印窗体均继承自该窗体,并实现此抽象方法。
在数据窗体中我们增加了Ediror、Searcher和Printer三个属性,分别用来指定使用的编辑、查询和打印的窗体实例,同时提供了DoEdit、DoSearch和DoPrint三个方法作为调用接口。在数据浏览窗体中放置三个按钮(工具栏按钮或菜单,依需要而定)并在其单击事件中调用。由于代码相似,此处仅以Print为例:
Printer.DataSet:=ActiveDataSet;
Printer.Execute;
end;
else
TDialogBox.Info('NotassignedPrinter');
至此,编辑、查询和打印的基本框架已搭好了。下面开始是具体细节问题了。
不同的数据表有不同的字段,那么编辑、查询和打印窗体界面自然也就不同了。细心的朋友可能已经发现了在上面的定义中编辑、查询和打印窗体都有一个DataSet属性。我们就是通过这个属性得取得字段信息,并使用动态创建控件的方法在窗体上创建出可供用户录入数据的元素。具体的代码此处就不写了。
这种做法充分利用了面向对象程序设计中的继承和多态,最大程度的减少了程序中的重复代码,降低日后的维护和修改成本。
一家之言,望各位斧正。
版权声明:本文为博主原创文章,未经博主允许不得转载。
上一篇: 小吃麻团哪些人不能吃?哪些人多吃有益?
下一篇: 8种中药泡脚治百病 艾叶泡脚驱寒治感冒
推荐阅读