{============================================
过程:
1. 设置数据库连接 10:14 2007-11-21 ok
2. 连接到数据库 <因为取所有库与具体数据库相关,略过>
3. 读所有表 11:14 2007-11-21 ok
4. 选择表
5. 取得所有字段
6. 选择,设置字段属性,中英文名称
7. 设置窗体属性,名称,高度,宽度...,测试工程属性
8. 设置 行,列属性
9. 计算并生成
10.保存
11.编译测试
=======================================
自动布局算法
============================================
用途:数据库编辑页面生成
以知:有表 ATable,包含字段Fields[0..N],
全部使用字体 font
每个字段有输入宽度 Fields[0..N].Size * Font.Size,
每个字段有输入提示 Labels[0..N].size * font.size,
字段类型是Fields[0..N].FieldKind,
对应的输入控件是Controls[0..N],
最长字段的输入宽度限制是 MaxWidth,
行高度是LineHeight,
页面宽度是PageWidth,
页面高度是PageHeight,
边距是marginx,marginy,
间距是spacex,spacey。
坐标系是屏幕坐标 左上 为原点。
求:自动排列的 每个字段的 Label 位置,宽度 算法。
解:首先求出最长Labels[x].size * font.size ==>LabelMaxWidth,
再求出每个字段输入区 size * font.size ===>edit.width,如果大于最大限制
用最大限制,否则用最大/自己定义 EditWidth
再每行应该排列多少个字段 PageWidth / LabelMaxWidth = cols,
再求出行数 N / cols ==> rows
让i=0...Cols-1 , j=0..rows-1
循环放 labels[i,j].x = marginx+(i*(labelwidth+editwidth + spacex)
labels[i,j].y= marginy +(j*(lineheight + spacey))
然后放到dfm 文本格式文件里面,加上代码模板,实现自动生成
============================================
自动套用模板生成输入页面
============================================
实现一套多种数据库都支持的兼容语法部分的数据库设计环境,并
自动生成数据库。
设计的同时再填写其附加信息,如powerbuilder ,label,header,以及编辑器采用
什么样式的rzEdit,Standard等
再加入一些验证,比如日期,
再加入一些自动生成主键的功能,
自动检查主键功能
自动检查是否为空功能
自动加入编辑,修改,保存的脚本
============================================
}
===================================================================
界面自动生成工具
主题:本文介绍了一个直接根据数据库表结构定义自动生成对该表记录进行存取操作界面(FORM)的工具
1. 界面自动生成的必要性
一般在数据库应用程序,特别是MIS软件开发时,都会选择使用开发工具,如PB、C++BUILDER,DELPHI,UNIFACE等等。这些工具为数据库应用程序的开发提供了强大的支持和帮助,使大部分开发工作转化成一种简单的,机械重复劳动。对一个新手,只要拖拉一些控件,在短短1-2个小时就可开发出一个可对数据库进行操作的漂亮界面,这对一个新手的工作是一个极大的鼓励。但我与一些从事数据库应用程序开发时间较长的朋友交谈时,他们几乎全部都抱怨做数据库应用程序开发太没有意思,没有创新,作长了感觉很烦。有个朋友也做了个小工具来减少重复劳动,效果还不错。因此本人就决定开发了界面自动生成工具。开发的第一个工具是以ORACLE和C++BUILDER 为基础的,用于一个大型MIS项目开发,效果很好,大大地减少开发工作量,降低了开发成本,特别是为维护工作带来了很大方便。在那个开发项目中,当第一个开发负责人因故要离开该项目时,软件交接很容易。这是因为自动生成的程序很整齐,很规范,严格遵守命名规则,因此程序的可读性很好,数据库中的表名与界面名和源文件名直接对应,找源文件就很方便。 在第一个工具成功的鼓励下,本人开发了实用性更强的第二个工具,是基于DELPHI的,可选择ORACLE 或SQL-SERVER数据库管理系统,及BDE或ADO连接方式。这里主要介绍第二个工具的一些设计思路。
2. 工具设计的主要思路
由于界面的一个重要功能是对数据库中表内的数据进行存取,界面与表之间有着直接关联,因此这里采用为每个数据库表生成一套界面的思路。由于每个表的数据项多少不同,界面的空间有限,这里根据每个表内数据项所占用的空间不同生成三种界面:
A 对数据项占用空间较小的情况,在界面的上半部安排一个记录列表(DBGRID),
下半部安排编辑面板(安排LABEL和各种编辑框)。如图1
图1
B对数据项占用空间中等的情况,把记录列表和编辑面板分别安排在两个界面
上。通过记录列表上的编辑按钮,调用编辑面板界面。如图2
图2
其中相片为图形文件,挡案按钮自动调用WORD,且把该WORD文件保存到数据库中去。
C对数据项占用空间较大的情况,生成类似与B的界面,只是在编辑界面上有
多页切换功能。
作为工具设计者来说,总希望生成的界面具有尽可能多的功能。但是靠计算机自动生成的只能是一些常规的,公共通用功能。对一些业务规则要求的非常规功能要自动生成难度很大,这还得靠人工来编程。对一些通用常规功能是否能自动生成,这还取决于该功能的语法定义是否简洁直观,及生成器开发难度。我们在生成器开发前,先开发尽可能多的通用控件。我们开发的通用控件有:通用打印控件,通用查询控件及时间编辑框。在对时间编辑框内数据进行编辑时,程序会自动弹出日历窗口。对DBGRID的功能进行扩展,可对DBGRID中的每一列进行排序,求最大值,最小值,平均值及求和。对界面生成时可供开发者选择的功能如下。
1)可选择该界面所对应的数据集使用TTABLE还是使用TQUERY。当使用后者时,给出查询条件。
2)一个数据项是否允许为空。本来数据库本身会做这个检查,但为提高效率,我们把这个检查放到前端来做。
3)该数据项在界面上是否可见。
4)该数据项是否是只读,或在插入时可给出数据,但不允许修改。
5)该数据项是否代表货币。
6)给出该数据项的检查范围(LIMIT)。
7)给出该数据项在读写时的MARSK。
8)定义该数据项是否存储图形文件,用户编辑该数据项时,当该数据项为空时会自动弹出文件目录窗口,供用户选择加载图形文件。当该数据项有内容时,会调用该图形文件的处理软件。
9)定义该数据项是否存储WORD文件。当用户编辑这个数据项时程序会自动弹出WORD窗口。
10) 可定义一个数据项为LIST框,且给出LIST内容。
11) 定义一些数据项,当这些数据项的内容都不为空时,它们所对应的记录将不允许修改和删除。(对应批准后的记录不能修改和删除的情况)。
在界面上除了提供常规的新增、修改和删除(确认,取消)外,还提供两个功能:在插入时可选择复制当前记录的数据。当用户调用其他操作,引起数据集刷新的情况时,光标会自动定位到原来位置。
对LOOK UP 框,从生成器实现来说,难度不大,但因要求的参数太多,开发者容易填错,这里就没有提供,让开发者手工来实现。在数据库应用程序开发中会大量使用的主从表结构,因语法定义有困难,这里就没有提供这种界面的自动生成。对一个主表对应多个从表的情况,有的开发者把一个界面的上半部分安排给主表,下半部分重叠多个子表,用按钮来切换子表,这样使用起来很方便。对这样的情况,开发者可在已生成界面的基础上,手工实现这样的界面安排,起码可减少工作量。可自动生成的通用功能可能还有不少,欢迎读者给我们提出新的建议。
3. 使用工具后的开发重点转移
目前我们使用的建模工具为ER-WIN。我们把数据项的物理含义说明放到逻辑模型的COMMENT中,把生成所需的选择放到物理模型的COMMENT中,预先为REPORT准备好一个模板。这样利用ER-WIN的REPORT功能,就可把生成器所需要的数据,通过ER-WIN的REPORT功能,按规定格式写入到一个TXT文件中去。生成器读这个TXT文件就可自动生成该文件中要求的全部界面。在C++BUILDER中生成器生成全部界面的 H 文件,PCC文件,DFM文件及作为主程序的PCC文件。在DELPHI中生成全部 PAS文件,DFM文件及作为主程序的DPR文件。在界面自动生成的基础上,开发者要做三件工作:
1) 根据业务处理流程,组织界面调用次序。这样生成的界面把数据库表定义,表操作和界面结合在一起对象性很强,很容易实现业务流程重构的要求。
2) 对表上一些生成器不能提供的操作,开发者手工去做。如安排新的按钮,编写事件程序,在已生成的程序中增加或删除部分代码,调用存储过程等。在实际工作中,当对已生成的代码作增删处理时,我们规定在修改处的两头必须用规定格式的注释行做出标记。这样当一个表中定义的数据项要增删改的修改时,在界面重新生成后,很容易把修改部分人工合到新界面程序中去。将来也可开发工具把修改部分自动合到新生成的界面中去。
3) 根据业务处理要求,编写存储过程。这里我们建议把尽可能多的业务处理放到存储过程中去做,这样做,其优点是明显的
由此可见,使用该工具开发时,开发者在概要设计时重点主要放在两个方面:一是搞好数据结构及相关界面生成参数设计,重点是使用ER-WIN去建模。另一个方面是搞好业务流程的提取,分析,整理。开发者不必再去考虑那些琐碎功能的分配与安排。采用界面自动生成工具来开发数据库应用程序带来的优点主要为:
1)容易保证程序和文档的一致性。当数据结构需要修改时,总是按照先修改ER-WIN内数据,再通过ER-WIN自动修改数据库内的表,再自动生成界面这个原则,文档和程序都来自同一个数据源,文档和程序自然会保持同步。
2)开发者可把主要精力放到业务流
没有合适的资源?快使用搜索试试~ 我知道了~
自动生成的delphi岩石
共30个文件
pas:9个
dfm:6个
txt:6个
需积分: 0 4 下载量 146 浏览量
2008-03-08
09:50:42
上传
评论
收藏 72KB ZIP 举报
温馨提示
delphi,自动生成,代码
资源详情
资源评论
资源推荐
收起资源包目录
CodeEngine2--较完整版.zip (30个子文件)
uMain.dfm 24KB
CodeEngine2.mdb 228KB
uDm.dfm 175B
uCommon.pas 10KB
设计说明.txt 9KB
没有完成的任务.txt 190B
CodeEngine2.cfg 406B
标准标签.txt 2KB
CodeEngine2.res 876B
CodeEngine2.dof 2KB
uMain.pas 17KB
几种不同的编辑控件.txt 1KB
CodeEngine2.dpr 477B
uDm.pas 278B
clean.bat 125B
data
list.txt 1KB
uDm.dfm 175B
ChildFrm.dfm 3KB
ChildFrm.pas 5KB
Unit1.dfm 131B
Project1.dpr 341B
uDm.pas 278B
Unit1.pas 408B
ref
uCnMainCodeEngine.dfm 93KB
list.txt 2KB
CodeEngine.dpr 2KB
uCnCeCommon.pas 26KB
uCnMainCodeEngine.pas 21KB
uCnCeConstSql.pas 3KB
uCnCeCommon.~pas 26KB
共 30 条
- 1
bashen
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0