想在窗体创建时根据dataset动态创建输入界面(如大家用得最多的dbedit,dbcombobox),我想大家都有在界面上摆N个DB控件的痛苦经历吧。
大家给点思路或参考.
大家给点思路或参考.
解决方案 »
- 在FastReport 2.53里面固定单张打印行数时候的问题
- 用Delphi建立通讯与数据交换服务器—Transceiver
- Indy的demo中chat为什么一运行就死机?
- 在线等! 急~~ 如何判断一个控件的某个事件对应哪个处理方法?
- CoCreateGUID如何在delphi中使用?
- 问一个比较弱的关于弹出式菜单问题!
- 怎样能让动态生成的image对象,响应鼠标如( movedown )事件
- 能不能仔细讲讲如何发送e-mail,带认证的,用delphi5,谢谢了
- 请问SQL语句中怎样把一个数据库的东西拷到另一个结构相同的库中
- 这样的查找功能用QUERY可以实现吗??
- 请问有哪种报表工具预览时是中文的,何处下载,如有希望能给我发一份,谢谢
- 窗体的release和free有何区别?
,可这样实在没必要!就是一个DB的窗体向导
DBedit.parentForm:=Form
DBedit.left:=x
不可能用到你们所说的db窗体向导.这些是delphi的功能.我要的是实际这些功能的代码。
combobox1:=Tcombobox.create(Form1)
combobox1.parent:=Form1
combobox1.setbounds(l,t,w,h)
for I := 0 to cdsTest.Fields.Count - 1 do
begin
with TDBEdit.Create(Application) do
begin
DataSource := ...
DataField := cdsTest.Fields[I].FieldName; end;
end;
但是这样我觉不好,一点都不灵活试一试吧
我也是觉得这样太死板了,而且算label及dbedit.dbcombobox的位置时不是很理想,就是问一下还有没有什么好的想法。
c[i]:=tcheckbox.Create(nil);
c[i].Parent:=self;
c[i].visible:=true;
fDBEdit array of TDBEdit;
i,fcount: integer;
begin
fcount:=adoquery1.fieldcount;
SetLength(fDBEdit,fcount);
i:=0;
while i<fcount-1 do
begin
fDBEdit[i]:=TDBEdit.Create(Self);
fDBEdit[i].Name=...;
...
end;
end;
然后根据Datset的字段数据类型,动态创建如LabelDBEdit、LabelDBCombobox等等,然后计算Parent(如放在一个Panel上)的大小,根据数量放置组件即可。
1、数据库建立数据字典表,描述数据对象(表,视图等)的字段信息。
2、前台,建立两维动态数组。数组数由数据字典数据对象列的数量决定。
一个用于创建LABEL,一个用于创建DB构件
ABC:array of array of TControl;
setLength(ABC,cds.recordcount,2);
3、根据数据字典的字段信息,动态生成 label构件和dbedit构件。
数据字典至少有以下信息:
列的中文含义:用于label.caption的显示
列的类型:根据类型确定生成DBEdit或DBCombobox
位置:(x,y) 确定label.left ,label.top, 默认情况可一行显示四个
还应该有很多,不一一列举了。你的想法非常好,但真的想做完善,还有许多细节要考虑。
可以让用户通过拖放自己定位置。就像我们用DELPHI.
...如查一个个加DBEDIT的话..我就从这里跳下去?!!