1. 去掉cxGrid中台头的Box

解决:在tableview1的ptionsview的groupbybox=false;

2.统计功能

解决:(1) tableview

1. tableview1的optionsviewfooter=ture

2.然后在cxGRid1的customize..中的summary 的footer.add需要合计的列kind= skSum

在Footer的第一列显示[合计:]  

加一个Summary项,Column设为Grid的第一列,Kind设为skNone  

在该Summary项的OnGetText事件中,输入:  

procedure   TFormExpense.tvExpenseTcxGridDBDataControllerTcxDataSummaryFooterSummaryItems2GetText( 

      Sender:   TcxDataSummaryItem;   const   AValue:   Variant;   AIsFooter:   Boolean;  

      var   AText:   String);  

begin  

      AText   :=   '合计:';  

end;

(2) 按条件汇总:  

在TableView的DataController->Summary->FooterSummary->OnSummary事件中,输入: 

procedure   TFormExpense.tvExpenseDataControllerSummaryFooterSummaryItemsSummary(  

      ASender:   TcxDataSummaryItems;   Arguments:   TcxSummaryEventArguments;  

      var   OutArguments:   TcxSummaryEventOutArguments);  

begin  

      //得到字段名   TcxDBDataSummaryItem(Arguments.SummaryItem).FieldName;  

      if (ASender.DataController.Values[Arguments.RecordIndex,   tvExpenseLevel.Index]   >   1)       //只统计Level列=1的值  

          and (TcxDBDataSummaryItem(Arguments.SummaryItem).Kind   =   skSum)   then  

          OutArguments.Value   :=   0; //Level   >   1的统计值设为0  

end;

OptionView中属性GroupFooters设为gfAlwaysVisible并设置需要求和的列,

在summary.default for Groups 下add加入需要合计的字段,column下显示fieldname 为统计字段,format为格式,kind为统计方法,position 为位子 spfooter 在分组的下面,spgroup 在分组的上面

或用cxGridPopupMenu1,在运行時可对任意数字类型列求和,方法是只需设置cxGridPopupMenu1的属性Grid为cxGrid1DBTableView1的cxGrid,

*****************************************************************************

3.去掉cxgrid 中的过滤下拉箭头

解决: 选择tableview1.optionscustomize.columnfiltering=fasle;

****************************************************************************

4.让“Drag a column here to group by that column”不显示

   解决:在cxGrid1DBTableView1->optionsview->groupbybox:=false即可

****************************************************************************

5.GroupPanel上面的英文[Drag a column header to group by that column]怎么可以改成中文

解决:最简单的方法是 TcxGridTableView.OnCustomDrawPartBackground,

也可用 OnCustomDrawGroupCell:

procedure TForm1.cxGrid1DBTableView1CustomDrawPartBackground(Sender: TcxGridTableView; ACanvas: TcxCanvas;AViewInfo: TcxCustomGridCellViewInfo; var ADone: Boolean);

begin

  AViewInfo.Text:='动态设置 GroupBox 的显示内容';

  ACanvas.FillRect(AViewInfo.Bounds);

end;

注:改成中文后将字段拖上去中文还是会显示,最好是设置空值

****************************************************************************

6.如何实现如下功能:

+财务部

+原材料仓库

+成品库

+冲压车间

+软件开发部

这个是部门的名称,点击加号就可以将本部门的人员情况显示出来。

解决:其实这是一个主从表关系,1:填好主表的keyfieldnames

2:填好从表的keyfieldnames

3:填好从表的 detaikeyfieldNames与masterkeyfieldnames

4: 从表的数据源一定要按与主表关联的字段排序

注:其它地方设置了主从表结构那样就显示不出来,比如设置了从表的Table或者Query的mastersource和

asterfield就会不能显示数据!如果是两个cxGrid的主从关系,这样设置就很OK了。

****************************************************************************

7.类似PageControl显示

解决:增加一个Level,将cxGrid1->RootLevelOptions->DetailTabsPosition设为dtpTop,然后相应的设置cxGrid1Level1,和cxGrid1Level2的Caption值。

****************************************************************************

8.如何设定左边几列,不能滚动

解决:使用DB Banded Table才可以实现,在cxGrid1DBBandedTableView里建立Band0,Band1

Band0的Fixed=tfLeft

Band1的Fixed=tfnone

设置要锁定的字段的BandIndex=0,其它为1,就OK了。

*******************************************************************************

9. 怎样实现如EXCEL一样的,当前格=G14+G15+G16 这样的功能

解决: 举一个简单的例子:label1.Caption := cxGrid1DBTableView1.DataController.Value[2,3]+cxGrid1DBTableView2.DataController.Values[1, 1]+cxGrid1DBTableView3.DataController.Values[1, 1];

所以不同cxGrid1DBTableView中的数据都可以给当前格,这样就做到了EXCEL中的当前格=G14+G15+G16 类似的功能。

****************************************************************************

10. 鼠标右击cxGrid1DBBandedTableView1菜单里的Edit Layout什么用,怎么使用?

解决:可以拖动字段,并列的可以拖成有层次感(一层层), 拖动时会显示箭头的,就是说可以拖一个字段放

****************************************************************************

11.怎样将cxGrid里的数据导入到EXCEL,HTML,XML和TEXT

解决:uses

cxExportGrid4Link; ( cxExportGrid6Link)

procedure TForm1.Button1Click(Sender: TObject);

begin

   ExportGrid4ToEXCEL('d:/wang.xsl',cxGrid1,True,True);

   ExportGrid4ToTEXT('d:/wang.txt',cxGrid1,True,True);

   ExportGrid4ToXML('d:/wang.xml',cxGrid1,True,True);

   ExportGrid4ToHTML('d:/wang.html',cxGrid1,True,True);

end;

****************************************************************************

12. 如何使满足条件的数据显示不同的颜色?

解决:

[delphi] view
plain
copy

  1. var
  2. AYellowStyle: TcxStyle;
  3. procedure TForm1.FormCreate(Sender: TObject);
  4. begin
  5. //行颜色
  6. AYellowStyle := TcxStyle.Create(Self);
  7. AYellowStyle.Color := $0080FFFF;
  8. AYellowStyle.TextColor := clMaroon;
  9. end;
  10. procedure TForm1.cxGrid1DBBandedTableView1StylesGetContentStyle(
  11. Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
  12. AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
  13. begin
  14. if ARecord.Values[cxGrid1DBBandedTableView1Lengthcm.Index] < 81 then
  15. AStyle := AYellowStyle;
  16. end;

这里cxGrid1DBBandedTableView1Lengthcm.Index小于81时就显示黄色

****************************************************************************

13. 如何从外边的TXT文件导入到cxGrid?

解决:

[delphi] view
plain
copy

  1. procedure CustomizeColumns;
  2. procedure LoadData;
  3. procedure TForm1.CustomizeColumns;
  4. const
  5. cDistance = 1;
  6. cRadius = 5;
  7. cPeriod = 4;
  8. cPstring = 0;
  9. var
  10. I: Integer;
  11. begin
  12. DecimalSeparator := '.';
  13. with cxGrid1TableView2 do
  14. for I := 0 to ColumnCount - 1 do
  15. if I in [cDistance, cRadius] then
  16. Columns[I].DataBinding.ValueTypeClass := TcxIntegerValueType//1,5列为Integer
  17. else
  18. if I in [cPstring,cPeriod] then
  19. Columns[I].DataBinding.ValueTypeClass := TcxStringValueType//0,4列为String
  20. else
  21. Columns[I].DataBinding.ValueTypeClass := TcxFloatValueType;//其他为Float
  22. end;
  23. procedure TForm1.LoadData;
  24. const
  25. AFileName = '资产负债表.txt';
  26. AHeaderLineCount = 2;
  27. var
  28. ARecords, AValues: TStringList;
  29. I: Integer;
  30. procedure InitRecord(const Str: string);
  31. var
  32. J: Integer;
  33. V: Variant;
  34. begin
  35. AValues.CommaText := Str;
  36. for J := 0 to AValues.Count - 1 do
  37. if AValues.Strings[J] <> '-' then
  38. begin
  39. V := AValues.Strings[J];
  40. if not VarIsNull(V) then
  41. cxGrid1TableView2.DataController.Values[I, J] := V;
  42. end;
  43. end;
  44. begin
  45. if not FileExists(AFileName) then
  46. raise Exception.Create('Data file not found');
  47. ARecords := TStringList.Create;
  48. AValues := TStringList.Create;
  49. with ARecords do
  50. try
  51. LoadFromFile(AFileName);
  52. cxGrid1TableView2.BeginUpdate;
  53. cxGrid1TableView2.DataController.RecordCount := Count - AHeaderLineCount;
  54. for I := 0 to Count - (AHeaderLineCount + 1) do
  55. InitRecord(Strings[I + AHeaderLineCount]);
  56. finally
  57. cxGrid1TableView2.EndUpdate;
  58. ARecords.Free;
  59. AValues.Free;
  60. end;
  61. end;
  62. procedure TForm1.FormCreate(Sender: TObject);
  63. begin
  64. CustomizeColumns;
  65. LoadData_Zcfz;
  66. end;
  67. ****************************************************************************
  68. 14 如何改变列的颜色?
  69. 解决:
  70. var
  71. AFirstColumnStyle: TcxStyle;
  72. procedure TForm1.FormCreate(Sender: TObject);
  73. begin
  74. //列颜色
  75. AFirstColumnStyle := TcxStyle.Create(Self);
  76. AFirstColumnStyle.Color := clAqua;
  77. AFirstColumnStyle.TextColor := clBlue;
  78. cxGrid1TableView1.Columns[1].Styles.Content := AFirstColumnStyle;
  79. end;
  80. ****************************************************************************
  81. 15 Set as default的用法?
  82. 解决:Set as default的用法是为了解决设置参数的方便而做的,比如:
  83. 连好数据库以后,更改cxGrid1DBBandedTableView1->OptionsCustomize-> ColumnFiltering 设为False。(这个设置可以将字段名的下拉单给去掉)更改cxGrid1DBBandedTableView1->OptionsView- >Navigator 设置为True。然后右击cxGrid1DBBandedTableView1,在弹出的菜单栏里面点击Set as default。
  84. OK,下次你再产生一个新的cxGrid1DBBandedTableView1时这些设置和刚才的一样了。如果需要设置的参数很多的时候,这个Set as default很有用!
  85. ****************************************************************************
  86. 16. 怎样使鼠标移动时,相应的单元里的文字变色?
  87. 解决:
  88. var
  89. FTrackItem: TcxCustomGridTableItem;
  90. FTrackRec: TcxCustomGridRecord;
  91. procedure TForm1.cxGrid1DBTableView1CustomDrawCell(
  92. Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  93. AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
  94. begin
  95. if (AViewInfo.GridRecord = FTrackRec) and (AViewInfo.Item = FTrackItem) then
  96. begin
  97. ACanvas.Font.Color := clred; //红色字体
  98. ACanvas.Font.Style := [fsUnderline];//带下划线
  99. end;
  100. end;
  101. procedure TForm1.cxGrid1DBTableView1MouseMove(Sender: TObject;
  102. Shift: TShiftState; X, Y: Integer);
  103. var
  104. AHitTest: TcxCustomGridHitTest;
  105. ATrackItem: TcxCustomGridTableItem;
  106. ATrackRec: TcxCustomGridRecord;
  107. begin
  108. ATrackItem := FTrackItem;
  109. ATrackRec := FTrackRec;
  110. AHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);
  111. if AHitTest is TcxGridRecordCellHitTest then
  112. begin
  113. FTrackItem := TcxGridRecordCellHitTest(AHitTest).Item;
  114. FTrackRec := TcxGridRecordCellHitTest(AHitTest).GridRecord;
  115. end
  116. else
  117. begin
  118. FTrackItem := nil;
  119. FTrackRec := nil;
  120. end;
  121. if (ATrackItem <> FTrackItem) or (ATrackRec <> FTrackRec) then
  122. begin
  123. // Invalidate old cell
  124. if ATrackRec <> nil then
  125. ATrackRec.Invalidate(ATrackItem);
  126. // Invalidate new cell
  127. if FTrackRec <> nil then
  128. FTrackRec.Invalidate(FTrackItem);
  129. end;
  130. end;

cxGrid使用汇总(一)的更多相关文章

  1. cxGrid使用汇总2

    17. 怎样设计多表头的cxGrid? 解决:cxGrid可以解决如下的表头: --------------------------------- | 说明1 | 说明2 | ------------ ...

  2. cxGrid使用汇总1

    这些都不是原创,只是平时收集到资料然后整理的,有些可能百度一下到处都是而且还大同小异也有些不是很好找,现在贴出来希望给那些用到cxGrid的人会有所帮助 1. 去掉cxGrid中台头的Box 解决:在 ...

  3. Delphi cxGrid使用汇总(一)

    1. 去掉cxGrid中台头的Box解决:在tableview1的ptionsview的groupbybox=false; 2.统计功能解决:(1) tableview1. tableview1的op ...

  4. cxGrid使用汇总4

    1.     CxGrid汇总功能 ① OptionsView-Footer设置为True,显示页脚   ② CxGrid的Summary选项卡定义要汇总的列和字段名及汇总方式,Footer选项卡定义 ...

  5. cxGrid使用汇总3

    32根据单元的值设置样式   解决:procedure   <aForm>.<aColumn>StylesGetContentStyle(         Sender:   ...

  6. cxGrid使用汇总

    1.自动行高:CellAutoHeight(单元自动高度)设置为True. procedure <AForm>.<AGridColumn>PropertiesValidate( ...

  7. 关于 cxGrid 的过滤问题

    http://bbs.csdn.net/topics/390536919 关于 cxGrid 的过滤问题 [问题点数:20分,结帖人zhengyc653]             不显示删除回复   ...

  8. Delphi CxGrid 汇总(4)

    1.     CxGrid汇总功能 ① OptionsView-Footer设置为True,显示页脚   ② CxGrid的Summary选项卡定义要汇总的列和字段名及汇总方式,Footer选项卡定义 ...

  9. Delphi CxGrid 汇总(2)

    17. 怎样设计多表头的cxGrid? 解决:cxGrid可以解决如下的表头: --------------------------------- | 说明1 | 说明2 | ------------ ...

随机推荐

  1. dubbo服务框架学习

    ====================================================================================== 1.提供注册服务.消费者可 ...

  2. Spring SpEL表达式的理解

    Spring的IOC本质就一个容器,也就是一个对象的工厂,我们通过配置文件注册我们的Bean对象,通过他进行对象的组装与床架. SpEL表达式就是一种字符串编程,类似于JS里面的EVAL的作用,通过它 ...

  3. C# Windows Forms 事件处理顺序

    事件引发的顺序对某些Windows 窗体应用来说十分重要.当某些事件需要特别处理时(如重绘窗体的某些部分),必须知道事件在运行时的确切引发顺序.下面就应用程序和控件的生命周期中的几个重要阶段的事件顺序 ...

  4. 视差贴图(Parallax Mapping)

    使用顶点光照的模型,当模型的面数很少的时候,光照效果会显得很奇怪,因为只有顶点上的光照是正确计算出来的,三角面上的光照都是通过硬件插值得到,所以难免会出现问题.基于像素的光照可以很好的改善这个问题.如 ...

  5. 科普:什么是IPV4?什么是IPV6?

    IPv4是Internet Protocol version 4(网际协议版本4)的英文简称,而中文简称为“网协版4”. 目前的全球因特网所采用的协议族是TCP/IP协议族.IP是TCP/IP协议族中 ...

  6. How to deploy JAVA Application on Azure Service Fabric

    At this moment, Azure Service Fabric does not support JAVA application natively (but it's on the sup ...

  7. x86_64 Ubuntu 14.04 LST安装gcc4.1.2 转载

    由于编译源码软件需要用到gcc4.1.2版本,但是本机已经安装有gcc4.8.4,下载gcc4.1.2源码编译总会出现运行找不到库文件错误,或者i386和x86_64不兼容问题,在http://ask ...

  8. Error querying database. Cause: java.sql.SQLException: ORA-01745: 无效的主机/绑定变量名

    今天调试程序是遇到了,下面的一个问题.我将对应的SQL语句拿到Toad下也能正常的执行,感觉有点莫名其妙,根据异常信息的提示查看对应的映射结果集也没发现错误,然后百度了一下,也有许多朋友也遇到过这样的 ...

  9. html中button的type属性

         接触web开发不久,今天遇到了一个问题,点击button按钮,浏览器没有反应,尝试了自己可以想到的所有办法,还是无果.只得请教他人,才发现是button的type属性搞得怪,原来:     ...

  10. AX函数,将EXCEL列号转为列名

    str GetExcelColName( int i_col) { int j; str ret; int v_div,v_mod; str tmp1,tmp2; int i_col_ascii; ; ...