如题。

解决方案 »

  1.   

    转:
    多层表头的DBGrid
    李立新 王宁 张玉麟 TclientDataSet控件是在Delphi中设计多层分布式数据库程序的核心控件,在Delphi3中它最早出现,在Delphi4和Delphi5中得到了进一步加强。TclientDataSet控件具有强大的功能,无论是单层、两层C/S和多层结构都可以使用TclientDataSet控件。从borland公司的公布的资料看,它的功能还将得到不断增强,本文主要介绍利用TclientDataSet控件的特色功能——抽象字段类型配合TDBGRID控件实现复杂题头。 在设计数据库录入界面时,经常需要实现如图1所示的复杂题头,这通常需要利用第三方控件或进行特殊处理才能实现。而在Delphi中利用TClientDataSe的ADT(抽象字段类型)配合TDbgrid控件,可以非常容易地实现这种题头。  图1 下面就以一个员工的工资信息表来说明具体步骤。 假设某单位的工资信息表的结构如图2所示。  图2 首先生成一个新的Application,在窗体上添加一个TClientDataSet构件和TDataSource构件,其name属性分别为ClientDataSet1和DataSource1,并把DataSource1的DataSource属性设置为ClientDataSet1上;添加一个TDBGRID和TdbNavigator控件,命名为DBGRID1和DbNavigator1,其Datasource1属性设置为ClientDataSet1。 然后建立TclientDataSet的字段定义。这里只介绍如何定义抽象字段:将基本信息和工资作为两个抽象字段,如图3所示,将两个字段分别命名为INFO和Salary。  图3 然后依次建立INFO字段和SALARY的子字段,单击对象观察器的ChildDefs,进入子字段编辑器,依次输入该字段的子字段。然后调用TclientDataSet的快捷菜单(鼠标点击TclientDataSet控件,然后右击鼠标)CreateDataSet建立CDS数据表,并保存文件。最后建立TClientDataSet的永久字段,TclientDataSet的快捷菜单,选择ADD All Fields。  图4 至此有关ClientDataSet的设置完毕。 在设置完ClientDataSet之后,需要设置DBGRID的显示属性。主要就是设置Colums的有关属性(略)。编译运行即可出现如图2所示的运行界面。然后添加一个Tdbnavigator控件,将其DataSource属性设置为Datasource1。这些与普通的基于BDE的数据库应用是一样的,不多叙述。  TclientDataSet还具有其它特色功能,有兴趣的程序员还可以进一步发掘。 
      

  2.   

    楼上的兄弟我就是照上面的做,还是实现不了啊,在设计阶段是多层的表头,运行阶段就不是的了,dbgrid到底怎么设置的啊?
      

  3.   

    1.新建一工程。
    2.在FORM1上放一个ClientDataSet,一个DataSource,一个DBGrid,设置好它们之间的关系。
    3.选中ClientDataSet,在属性编辑器中按FieldDefs属性,加入两个字段:INFO, SALARY
      设置它们的DataType属性为ftADT.
    4.选中INFO字段,在属性编辑器中按ClildDefs属性,加入几个子字段,设置它们的DataType
      属性为ftString
    5.同样为Salary字段加入几个子字段
    6.在ClientDataSet上按右键,选择CreateDataSet菜单。
    7.在属性编辑器中设置ClientDataSet的Active属性为True。
    8.在DBGrid中应该可以见到结果了。
      

  4.   

    to cg1120(代码最优化-§新年祝福你,好运伴着你§): 
    你的ClientDataSet是怎样连接数据库的?
      

  5.   

    不用第三方控件似乎比较难以实现的,用RXLib,很好的,又不用注册,直接可以像delhpi自己的控件一样用,多好。
      

  6.   

    用dbgrdieh多好,又有源代码。功能又多,还支持直接打印呢?还不用注册。我一直用。要的话我可以给你。
      

  7.   

    zouwenyan(珠穆)  where to download as you say?
      

  8.   

    [email protected]
    谢了也发一份给俺吧。
      

  9.   

    to kdj1020(笑失意狼)
        能发一份给我吗?my e-mail:[email protected].
        先谢谢你了.
      

  10.   

    kdj1020(笑失意狼)  
      谢谢,我也要一份
      

  11.   

    kdj1020(笑失意狼)
      邮箱  [email protected]
      

  12.   

    kdj1020(笑失意狼)
    我也要一份。谢谢!
    [email protected]
      

  13.   

    能不能也给我一份[email protected]