通过对Developer Express Inc cxGrid系列组件基类的修改,使我收获很多。
基本可以说能够完全掌握Grid类型控件、报表类型控件的编写原理。
   通过上面的Demo主要目的是想了解一下您认为还有什么更好的建议,希望您能提出来。
这样对我本人也是一种考验,也是一个再次学习的过程。
   谢谢!
下载地址:
http://www.dcmscn.cn/dispbbs.asp?boardID=8&ID=528&page=1

解决方案 »

  1.   

    本次主要做了以下改动:一、修改了哪些部分,及修改原因和目的
    1、在cxGridPopupMenuConsts单元中所做的修改
    增加了以下常量:
            cxSGridShowColumnFiltering
            cxSGridShowNavigator
            cxSGridShowGroupRowHide
            cxSGridShowGroupRowLabelHide
            cxSGridShowGroupColumnHide
            cxSGridShowGroupColumnFilterTextHide
            cxSGridShowColumnIndent
    目的是:增加TcxGridPopupMenu组件的菜单项
    2、对CxGrid做了适当的修改
    增加了以下属性:
      cxGrid1DBTableView1.OptionsCustomize.GroupRowHide 设置是否显示分组行的属性
      cxGrid1DBTableView1.OptionsCustomize.GroupRowLabelHide          设置是否显示分组行的(+/-)号属性
      cxGrid1DBTableView1.OptionsCustomize.GroupColumnHide            设置是否显示分组字段的属性
      cxGrid1DBTableView1.OptionsCustomize.GroupColumnFilterTextHide  设置是否显示分组字段筛选内容的属性
      TcxGridDBColumn.IsIndent            设置该字段是否缩排
    目的是:对上次的需求做出相应的动作
    3、对TcxGridPopupMenu做了适当修改
    增加了以下属性:
       集合类型的属性:MenuItemsVisible
       有如下明细项目:ColumnAscVisible, ColumnDescVisible, ClearSortingVisible, GroupByThisFieldVisible,
            ThisGroupItemVisible, GroupByBoxVisible, RemoveColumnVisible, FieldChooserVisible,
            FooterVisible, GroupFooterVisible, ColumnFilteringVisible, NavigatorVisible,
            GroupRowHideVisible, GroupRowLabelHideVisible, GroupColumnHideVisible,
            GroupColumnFilterTextHideVisible, ColumnIndentVisible, BestFitVisible,
            BestFitAllColumnsVisible, AlignLeftVisible, AlignRightVisible, AlignCenterVisible
       明细项目的中文含义如下:
           升序、降序、取消排序、加入分组汇总、取消分组汇总、分组面板、对齐方式、左对齐
           右对齐、居中、隐藏、查看隐藏列、最佳列宽、最佳列宽(所有列)、汇总栏分组汇总栏
           字段筛选、数据导航条、是否隐藏分组行、是否显示分组行 (+/-) 号、是否隐藏分组字段
           是否隐藏分组字段的筛选内容、字段是否缩排
    目的是:控制弹出式菜单项是否显示
    4、对dxPScxGridLnk做了适当修改          
    没有增加新的属性,只是做了代码的适当修改,目的是让cxGrid中缩排的字段在打印时也会自动缩排
    注:但需要你在客户端程序的UI部分做一些滚动的事情,这样打印时就自动全部缩排了。
    5、在TdxGridReportLinkOptionsView 类中所做的修改
    增加了以下属性:
            GroupRowHide
            SortBmpHide
    目的是:在报表中增加控制项
            1、控制分组行是否打印
            2、排序图标是否打印
    第二次修改:11/24 QuantumGrid 会议纪录:          (cxGrid二期修改依据)
      1.预览画面的设定条件不能和查询界面重复,查询有的预览就不要有了,预览有得查询就不要有
      2.小计字段:数字应该右对齐,小计要能支持打印
      3.预览标题处打印分组分页条件值,可以和前端选项条件值排在一起,也可以分行打印
                 
                 
                 
    一、修改了哪些部分,及修改原因和目的
    1、在 dxPScxGridLnk 单元中所做的修改
    删除了是"否打印分组栏"的选项.
    目的是:这样避免了和cxGrid上"是否打印分组栏"重复
    2、对CxGrid做了适当的修改
    增加了以下属性:
      cxGrid1DBTableView1.OptionsCustomize.ConditionCaptionO     设置打印筛选条件字符串1
      cxGrid1DBTableView1.OptionsCustomize.ConditionCaptionT     设置打印筛选条件字符串2
      cxGrid1DBTableView1.OptionsCustomize.ConditionCaptionS     设置打印筛选条件字符串3
    (注:只有当赋了值之后才会打印出来,不赋值就不会打印,赋空也不会打印)
    目的是:对上次的需求做出相应的动作
    3、对dxPScxGridLnk 单元做了适当修改
    修改了方法:TdxGridTableViewFormatter.DoInitializeGroupFooterItem目的是:打印汇总统计时,报表上分组汇总的值自动右对齐
    4、对cxGridTableView 单元做了适当修改          
    增加了以下属性:ValueAlignment : Talignment;目的是:cxGrid上面的汇总ROW上面的值自动右对齐
    {注:当然也可以控制左边对齐或居中}
    5、在 dxPScxGridLnk 单元中所做的修改
    增加了以下类:
        TdxGridViewConditionOProducer
        TdxGridViewConditionTProducer
        TdxGridViewConditionSProducer
    目的是:保证在改变需要打印的Level.Caption的时候不会改变 筛选条件字符串
    {为什么会改变Level.Caption的打印内容呢?因为我们需要在分组分页的时候在这里打印分组的具体信息}
    6、在 dxPSCore 单元中所做的修改   
    修改了以下属性:
        property RenderInf TdxPSReportRenderInfo read GetRenderInfo;  原来是保护属性
    现在更改为 Public 属性目的是:在OnCustomDrawLeveCaption事件中可以获取 什么时候分组,换页之后的起始行和结束行