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

1. 去掉cxGrid中台头的Box 解决:在tableview1的ptionsview的groupbybox=false;

***************************************************************************** 2.统计功能 解决:(1) tableview tableview1的optionsviewfooter=ture 然后在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.Values[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. 如何使满足条件的数据显示不同的颜色?

解决: var AYellowStyle: TcxStyle;

procedure TForm1.FormCreate(Sender: TObject); begin //行颜色 AYellowStyle := TcxStyle.Create(Self); AYellowStyle.Color := $0080FFFF; AYellowStyle.TextColor := clMaroon; end;

procedure TForm1.cxGrid1DBBandedTableView1StylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); begin if ARecord.Values[cxGrid1DBBandedTableView1Lengthcm.Index] < 81 then AStyle := AYellowStyle; end;

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

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

解决:  procedure CustomizeColumns; procedure LoadData;

procedure TForm1.CustomizeColumns; const cDistance = 1; cRadius = 5; cPeriod = 4; cPstring = 0; var I: Integer; begin DecimalSeparator := '.'; with cxGrid1TableView2 do for I := 0 to ColumnCount - 1 do if I in [cDistance, cRadius] then Columns[I].DataBinding.ValueTypeClass := TcxIntegerValueType//1,5列为Integer else if I in [cPstring,cPeriod] then Columns[I].DataBinding.ValueTypeClass := TcxStringValueType//0,4列为String else Columns[I].DataBinding.ValueTypeClass := TcxFloatValueType;//其他为Float end;

procedure TForm1.LoadData; const AFileName = '资产负债表.txt'; AHeaderLineCount = 2;

var ARecords, AValues: TStringList; I: Integer;

procedure InitRecord(const Str: string); var J: Integer; V: Variant; begin AValues.CommaText := Str; for J := 0 to AValues.Count - 1 do if AValues.Strings[J] <> '-' then begin V := AValues.Strings[J]; if not VarIsNull(V) then cxGrid1TableView2.DataController.Values[I, J] := V; end; end;

begin if not FileExists(AFileName) then raise Exception.Create('Data file not found');

ARecords := TStringList.Create; AValues := TStringList.Create;

with ARecords do try LoadFromFile(AFileName); cxGrid1TableView2.BeginUpdate; cxGrid1TableView2.DataController.RecordCount := Count - AHeaderLineCount; for I := 0 to Count - (AHeaderLineCount + 1) do InitRecord(Strings[I + AHeaderLineCount]); finally cxGrid1TableView2.EndUpdate; ARecords.Free; AValues.Free; end; end;

procedure TForm1.FormCreate(Sender: TObject); begin CustomizeColumns; LoadData_Zcfz; end;

**************************************************************************** 14如何改变列的颜色? 解决: var AFirstColumnStyle: TcxStyle;

procedure TForm1.FormCreate(Sender: TObject); begin //列颜色 AFirstColumnStyle := TcxStyle.Create(Self); AFirstColumnStyle.Color := clAqua; AFirstColumnStyle.TextColor := clBlue; cxGrid1TableView1.Columns[1].Styles.Content := AFirstColumnStyle; end; **************************************************************************** 15 Set as default的用法? 解决:Set as default的用法是为了解决设置参数的方便而做的,比如: 连好数据库以后,更改cxGrid1DBBandedTableView1->OptionsCustomize-> ColumnFiltering 设为False。(这个设置可以将字段名的下拉单给去掉)更改cxGrid1DBBandedTableView1->OptionsView- >Navigator 设置为True。然后右击cxGrid1DBBandedTableView1,在弹出的菜单栏里面点击Set as default。 OK,下次你再产生一个新的cxGrid1DBBandedTableView1时这些设置和刚才的一样了。如果需要设置的参数很多的时候,这个Set as default很有用!

**************************************************************************** 16. 怎样使鼠标移动时,相应的单元里的文字变色? 解决: var FTrackItem: TcxCustomGridTableItem; FTrackRec: TcxCustomGridRecord;

procedure TForm1.cxGrid1DBTableView1CustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin if (AViewInfo.GridRecord = FTrackRec) and (AViewInfo.Item = FTrackItem) then begin ACanvas.Font.Color := clred; //红色字体 ACanvas.Font.Style := [fsUnderline];//带下划线 end; end;

procedure TForm1.cxGrid1DBTableView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var AHitTest: TcxCustomGridHitTest; ATrackItem: TcxCustomGridTableItem; ATrackRec: TcxCustomGridRecord; begin ATrackItem := FTrackItem; ATrackRec := FTrackRec;

AHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y); if AHitTest is TcxGridRecordCellHitTest then begin FTrackItem := TcxGridRecordCellHitTest(AHitTest).Item; FTrackRec := TcxGridRecordCellHitTest(AHitTest).GridRecord; end else begin FTrackItem := nil; FTrackRec := nil; end;

if (ATrackItem <> FTrackItem) or (ATrackRec <> FTrackRec) then begin // Invalidate old cell if ATrackRec <> nil then ATrackRec.Invalidate(ATrackItem); // Invalidate new cell if FTrackRec <> nil then FTrackRec.Invalidate(FTrackItem); end; end;

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

cxGrid使用汇总1的更多相关文章

  1. cxGrid使用汇总(一)

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

  2. cxGrid使用汇总2

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

  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. 异常:exception和error的区别

    Throwable 是所有 Java 程序中错误处理的父类 ,有两种子类: Error 和 Exception .     Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM ...

  2. (剑指Offer)面试题19:二叉树的镜像

    题目: 操作给定的二叉树,将其变换为源二叉树的镜像. 二叉树的定义如下: struct TreeNode{ int val; TreeNode* left; TreeNode* right; }; 输 ...

  3. Myeclipse的快捷键大全

    选择你要注释的那一行或多行代码,按Ctrl+/即可,取消注释也是选中之后按Ctrl+/即可. 如果你想使用的快捷键的注释是的话,那么你的快捷键是ctrl+shift+/ 我以前都是手动注释的,直接打/ ...

  4. jQuery Mobile和PhoneGap混合开发

    其实二者并不影响,PhoneGap负责调用系统的接口,jQuery Mobile实现一些网页效果.PhoneGap开发请看上一篇文章,jQuery Mobile开发环境搭建如下:[请先阅读上一篇文章, ...

  5. Educational Codeforces Round 7 B. The Time 水题

    B. The Time 题目连接: http://www.codeforces.com/contest/622/problem/B Description You are given the curr ...

  6. This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms. 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分 解决方案

    但web启用了md5加密后 有可能出现这样的错误 This implementation is not part of the Windows Platform FIPS validated cryp ...

  7. Approaching the Fun Factor in Game Design

    I recently did some research on this and talked to Dr. Clayton Lewis (computer Scientist in Residenc ...

  8. c#(asp.net)杂谈笔记

    1.js解析json格式的时间 //转换json格式时间的方法 如Date(1340239979000)转换为正常 function ConvertJSONDateToJSDateObject(JSO ...

  9. swift 获取UI上某点点颜色

    extension UIView { func colorOfPoint (point: CGPoint) -> UIColor { var pixel = UnsafePointer<C ...

  10. ScrollView反弹效果 仿小米私密短信效果

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/28441197 如今非常多APP都给ScrollView加入了反弹效果.QQ.小米 ...