想在窗体创建时根据dataset动态创建输入界面(如大家用得最多的dbedit,dbcombobox),我想大家都有在界面上摆N个DB控件的痛苦经历吧。
大家给点思路或参考.

解决方案 »

  1.   

    呵呵,你用在dataset的OPEN时,就取得字段数目,创建同样多的DBEDIT,然后就开始给值呗
    ,可这样实在没必要!就是一个DB的窗体向导
      

  2.   

    就是呀,正如耗子所说的,大可不必,就是Db窗体的向导呀!Delphi本身就有!
      

  3.   

    DBedit:=TDBedit.create(Form)
    DBedit.parentForm:=Form
    DBedit.left:=x
      

  4.   

    ???是我太笨了,还是你们太聪明了。:)我想建一个基类窗口,将这些事件封装好,以后不管维护什么表,直接传几个参数就可以了。
    不可能用到你们所说的db窗体向导.这些是delphi的功能.我要的是实际这些功能的代码。
      

  5.   

    再如:
    combobox1:=Tcombobox.create(Form1)
    combobox1.parent:=Form1
    combobox1.setbounds(l,t,w,h)
      

  6.   

    也太懒了吧跟我一样:)
    for I := 0 to cdsTest.Fields.Count - 1 do
    begin
      with TDBEdit.Create(Application) do
      begin
        DataSource := ...
        DataField := cdsTest.Fields[I].FieldName;  end;
    end;
    但是这样我觉不好,一点都不灵活试一试吧
      

  7.   

    这样实现方法,我已经做过了。
    我也是觉得这样太死板了,而且算label及dbedit.dbcombobox的位置时不是很理想,就是问一下还有没有什么好的想法。
      

  8.   

    for i:=1 to query1.RecordCount do begin
                c[i]:=tcheckbox.Create(nil);
                c[i].Parent:=self;
        c[i].visible:=true;
      

  9.   

    var
       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;
      

  10.   

    最好用类dbgrid的界面录入,无排版的麻烦,表不要动态建控件
      

  11.   

    先做一些组件,如LabelDBEdit、LabelDBCombobox(DBEdit带Label啊)等等,
    然后根据Datset的字段数据类型,动态创建如LabelDBEdit、LabelDBCombobox等等,然后计算Parent(如放在一个Panel上)的大小,根据数量放置组件即可。
      

  12.   


    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, 默认情况可一行显示四个
    还应该有很多,不一一列举了。你的想法非常好,但真的想做完善,还有许多细节要考虑。
      

  13.   

    位置不是问题。
    可以让用户通过拖放自己定位置。就像我们用DELPHI.
      

  14.   

    天哪...你不会直接在FIELD那个编辑框直接把它们拉出来啊..
    ...如查一个个加DBEDIT的话..我就从这里跳下去?!!