读书人

动态生成的录入界面解决办法

发布时间: 2012-12-31 11:57:52 作者: rapoo

动态生成的录入界面
很久以前就想实现这样一个功能,数据的展现和录入界面是根据数据库动态生成的,于是 创建了表的登记表 tables,专门用来登记 表的信息,columns字段表,专门用来登记表的字段信息,通过读取columns表中字段类型的信息,动态在界面上创建EDIT,COMBOBOX等一系列信息。各位大牛们有没有这样做过,界面的生成感觉有些难度,而且有些字段的长度也不同,甚至像COMBOBOX这样的字段需要绑定ITEMS值。有做过的朋友指点一下
[解决办法]
感觉还是要根据条件来看吧,首先从作业界面上划分,建不同的父类窗体,一般简单就是grid之类的,复杂的就是双档,即单头、单身、单尾、左边有的会有list列表。这部分估计占大头,要写不少东西,
接下来就是每个单子上控件的生成,我一般做法是继续分类,当然这部分控件也可以重写的,一般是固定几种控件类型,再在控件上深入。就combobox而言,单独一个Columns估计搞不定,要一些更加详细的信息或者获取Items和keyItems的途径,如果是软件公司的话,一般也会写控件设定这些值和grid的字段绑定。
细化后,一步一步来吧,应该不难
[解决办法]
录入界面是根据数据库动态生成的-0-这个我见过,上家公司的一位高手开发过,代码量挺大的,也没细看,

表中应有字段显示长度,默认值,显示名称等等记录,挺繁琐的
[解决办法]
不难实现,只不过,维护这些字段的表信息量会很大,要很精确;
还可以做成能够进行2次开发,让用户来自定义
[解决办法]
最简单的,以一个2列的stringgrid:
列1:字段名
列2:字段内容

一行对应一个字段
[解决办法]
我很早以前也想实现这个功能,帮顶了。。。。。
[解决办法]
应该不像4L说得那么简单吧,有枚举类型和图片类型的不好办咧,另外就算用stringgrid来做,把数据修改回数据库时也要按照数据库字段的类型再进行一次转换,比如使用sql语句插入的话,要注意数字文本,byte日期等的引号
,对于图片类型的字段要进行后续处理等等
反正技术上能实现,就是个力气活,我以前用C#实现过
[解决办法]
动态创建控件的难度不是很大,根据数据库内容设置属性也不是很难,关键需要处理好以下四个问题:

1、每次需要动态创建的控件数量不能太多,否则影响窗体加载速度。
解决方法:可以动态创建一次,然后序列化成XML(NativeXML)或者DFM等文件格式,每次动态加载序列化后的内容。
2、动态创建控件的布局管理是一个非常难受的事情,强力建议使用Delphi2010、XE、XE2等新版本。
3、空间焦点跳转的控制。
4、空间事件的加载。


建议:参考微软Visual Stdio 2010之后推出的类似产品LightSwitch

读书人网 >.NET

热点推荐