我用pagecontrol做了7个tabsheet页面,每个页面都有较多的数据控件,左侧是一个树形,比如我选择树形的一个类别,那么对应的tabsheet则显示对应的信息。我全部用的adotable来进行连接,一个adotable对应数据库里的一个表,对应一个tabsheet页面上的处理信息
问题1:新建数据的时候,我7个tabsheet里的数据可能有1-2tabsheet里没有录入任何信息,比如我下次再进入的时候,那么有数据的表我更新的时候就是先用adotable.edit,然后再用adotable.post,那么无数据的表,我就是adotable.appand?,因为我只有一个保存按钮。
问题2:我有tabsheet上有上百个数据控件,我想点击树形上类别,tabsheet显示数据的时候,dbedit的编辑都处于不可编辑状态,那么除了一个个dbedit.enable := false,然后点编辑按钮则让他们显示可编辑状态之外,是否还有更好的办法来处理。因为现在又数据的页面可以随意输入数据进去,这样用户体验不好,而且很容输入之后直接点击保存了。那么久会出现数据集没有处于编辑状态,不可保存的错误。
问题3:每个tabsheet都有一个id(编号)做为关键字做链接,我是设置第一个页面的id录入之后,自动赋值到其他页面的id上,那么就有一个问题,如果鼠标进入的时候,这个赋值过来的数据就不见了,然后鼠标退出,又有了,请问下这种情况有更好的处理办法吗?
问题4:我通过dblookupcombobox获取数据然后赋值给一个dbedit,这个dbedit我设置为不可编辑,然后下面有dbgrid,dbgrid可以显示dblookupcobobox里的数据,显示不了dbedit的数据,请问这是为什么?烦请各位帮帮忙了

解决方案 »

  1.   

    问题1:保存时如果某个tabsheet都为空,那么也向对应表中插入一条记录,只是ID字段不为空,其他都为空。
           下次再进入的时候,者用adotable.edit,然后再用adotable.post。
    问题2:可以将那些控件放到一个panel上面。设置panel.enabled:=true或者panel.enabled:=flase来实现你要            的效果。
    问题3:没有理解什么意思。
    问题4:数据库中存放的是ID,如果要在dbgrid显示ID对应的内容,可以用SQL关联显示。或者用dbgrideh控件来实现这个效果。
      

  2.   

    for i := 0 to ComponentCount-1 do
    begin
      if Components[i] is TDBEdit then
       TDBEdit(Components[i]).ReadOnly := False; //True时只读不能写。个人认为这个属性比用Enable好。
     else if Components[i] is TDBxxx then//.... 这样可以分类设定各个控件是否只读。
    end