Apr 13, 2009

毕业设计(未完工)

前言: 上周的时间几乎都花在搞毕设上了。感觉做的这个毕业设计很奇怪,没有参考代码就算了,连需求文档,软件架构分析,模块划分等都没有,直接就是开了几个小会,说了些功能要求就让我们自己写。没法,TA的老大们最近忙着推出4.0版本的TA系统,没空理我们。我们10F这些实习生闲的心慌慌,以为毕设没法完成了。谁知道Delphi这么强大。。开发进度很快,已经差不多要完工了。贴几张图上来记录一下成果
格式: 图在上,解说在下.




1 :这是框架的配置文件,主要用于配置登录数据库的方案名,用户名(暂时没把密码考虑进去,不然还要考虑加密,况且数据库目前只支持Oracle)。登录窗口直接从这里读取这两个配置文件从而进行初始化这里使用了Delphi中的TIniFile类进行配置文件的读取和写入。确实是非常好用的一个类。
可以在配置文件上直接更改。若检测到改动会提示保存与否。




2:这是登录成功后从系统工具菜单里打开的新报表生成工具的第一页。主要用于查询现有可用报表,从一个专门的数据库表单中读取数据并显示在DBGrid中。这一页使用的是DBGrid,确实没有DBGridEh方便,为了写一个随鼠标滚轮而移动TDataSource的游标,并且实现在移动到表格边界时自动翻页,我得另外写个窗口过程,将DBGrid原先的窗口过程保存为一个TWndMethod的变量,将新的窗口过程赋给它。在新的窗口过程中要捕获WM_MOUSEWHEEL消息并做如下处理
if Message.WParam >0 then
ADBGrid.DataSource.DataSet.MoveBy(-1)
else
ADBGrid.DataSource.DataSet.MoveBy(1);
对于非鼠标滚轮消息则调用保存的原DBGrid窗口过程处理。同时,如果要在不同页里其他DBGrid里实现相同效果,我得做类似的处理。还要小心非鼠标滚轮的消息不会被忘记处理,不然马上会报错。
而如果使用DBGridEh,它是自带的属性 -_-##
上边蓝色部分两个Edit组件是用来跟踪当前选中报表信息,可以随顺表滚轮滚动动态更新为当前所在记录行



3:这是第2个页面。主要功能是绿色部分的SQL语句查询功能并在下边的表格里显示。在SQL语句输入框上有几个功能键:可以从外部带入一个SQL脚本,可以将输入的SQL脚本导出到硬盘,清空SQL输入框内容,执行SQL语句,另外带了一个拼写帮助。如右上角对话框所示。
可以在显示结果的DBGridEh中直接修改记录数据,并且修改将会被自动保存(暂时不支持回滚)。令人感动的DBGridEh自带了even和odd行颜色不同的功能,如果用普通的DBGrid又得自己写属性。



3:这是第三个字段设置页。主要用来勾选新报表要采用的字段,grid里的checkbox还没有加上去,因为要修改原表结构,添加至少三个字段进去,所以要问下导师要不要加。可以查询所有可用字段,可以添加和删除字段。
这一页可以从第一页双击GRID中某行数据跳转过来,如果是这样的话左边的新报表信息栏会已从第一页选中的报表配置为模版导入。图中左边显示的就是导入报表模版的结果



4:最后一个是SQL脚本生成。将生成新报表的操作全部翻译为SQL语句,导出成为脚本,如果某台计算机上装了相应的数据库导入了相应的表,那只要运行这个脚本,就可以在任意计算机上生成根据配置结果生成的新报表。

总结:一切都只草草带过。具体技术细节有时间我会陆续发上来,不过其实也没什么难的,是Delphi这把刀太好使了。如果是用MFC,这框架就得累死我。
这个框架写的还是不错的,可扩展性很强。有新的功能可以独立编写一个功能模块然后把相应的FORM做一些格式上更改就可以直接加入现有的框架了。但我觉得还不够,如果所有的功能模块都可以写成DLL文件形式的那就跟方便了,主程序也不会越写越大。

同时我有个想法,因为DLL文件调试很不方便(一旦生成了就没法跟进文件调了),而调试DLL的方法除了专门建个测试工程,还剩一个使用系统日志调试的。我想写个这样的DLL调试工具,liangpei2008在CSDN里回复说建议我用COM+写. GOSH,我还不清楚COM+是什么呢!慢慢来。总是会懂的,我要加油

No comments:

Powered By Blogger