delphicxGrid的使用.doc_第1页
delphicxGrid的使用.doc_第2页
delphicxGrid的使用.doc_第3页
delphicxGrid的使用.doc_第4页
delphicxGrid的使用.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

delphi cxGrid的使用(转)2010-09-06 10:181.简单介绍:cxGrid右下方的cxGrid1Level1是表示Grid表的层,cxGrid可以有多层,这相当于集合了PageControl的功能,而cxGrid1Level1右边的cxGrid1DBTableView1相当于DBGrid一样。右击cxGrid1可以添加cxGrid1Level2,右击cxGrid1Level2,可以选择Create View , Add level 或者Delete Level。Add level可以增加子Level,Create View里面可以选择很多不同总类的View。其中1)DB Table可以和数据库连接的View,更一般的DBGrid类似,它比DBGrid多了比如鼠标中键可以用,可以统计,查询,等等功能;2)DB Banded Table 则可以实现比如:-| 说明1 | 说明2 |-| 字段1 | 字段2 | 字段3 | 字段4 |等类似的功能;3)DB Card View 则提供了卡片方式的显示数据的功能,这个用在比如人事档案管理比较不错;4)其它不一一赘述。2.一些使用方法:1)有图片和MEMO的例子:拖入一个cxGrid1,Table1,DataSource1。 Table1的DatabaseName设为DBDEMOS,TableName设为biolife.db, Active设为True;DataSource1的DataSet设为Table1;cxGrid1DBTableView1的DataController中的DataSource 设为DataSource1;右击cxGrid1DBTableView1选择Create All Columns;双击cxGrid1,在弹出的窗口中找到 cxGrid1DBTableView1Notes和cxGrid1DBTableView1Graphic,将它们的Properties属性设为BlobEdit;运行看看 结果。再将cxGrid1DBTableView1Graphic的Properties属性设为Image,再将Properties下的Stretch设为True, 将cxGrid1DBTableView1-optionsview-CellAutoHeight 设为True,看看结果。2)如何让“Drag a column here to group by that column”不显示解决:点击cxGrid1上的cxGrid1DBTableView1在cxGrid1DBTableView1-optionsview-groupbybox:=false即可 注:OptionsView里面有很多属性可能经常要用,比如:ColumnAutoWith,Navigator等等,慢慢琢磨吧:)3)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);beginAViewInfo.Text:=动态设置 GroupBox 的显示内容;ACanvas.FillRect(AViewInfo.Bounds);end;4)如何实现如下功能:+财务部+原材料仓库+成品库+冲压车间+软件开发部这个是部门的名称,点击加号就可以将本部门的人员情况显示出来。解决:其实这是一个主从表关系,1:填好主表的keyfieldnames2:填好从表的keyfieldnames3:填好从表的detaikeyfieldNames与masterkeyfieldnames4: 从表的数据源一定要按与主表关联的字段排序注:其它地方设置了主从表结构那样就显示不出来,比如设置了从表的Table或者Query的mastersource和asterfield就会不能显示数据!如果是两个cxGrid的主从关系,这样设置就很OK了。5)统计功能解决:cxGrid1DBTableView1-optionsview-Footer 设为TruecxGrid1DBTableView1-DataController-Summary设置FooterSummaryItems即可 6)类似PageControl显示解决:增加一个Level,将cxGrid1-RootLevelOptions-DetailTabsPosition设为dtpTop,然后相应的设置cxGrid1Level1,和cxGrid1Level2的Caption值。未完待续。 以上是在用cxGrid时候碰到的一些问题,我总结了一部分,还有很多问题等待解决。在这里我希望用过cxGrid的人帮着一起总结一下,让后学者可以少走点弯路! 7)如何设定左边几列,不能滚动?解决:使用DB Banded Table才可以实现,在cxGrid1DBBandedTableView里建立Band0,Band1Band0的Fixed=tfLeftBand1的Fixed=tfnone设置要锁定的字段的BandIndex=0,其它为1,就OK了。 8)怎样实现如EXCEL一样的,当前格=G14+G15+G16 这样的功能解决:举一个简单的例子:label1.Caption := cxGrid1DBTableView1.DataController.Values2, 3+cxGrid1DBTableView2.DataController.Values1, 1+cxGrid1DBTableView3.DataController.Values1, 1;所以不同cxGrid1DBTableView中的数据都可以给当前格,这样就做到了EXCEL中的当前格=G14+G15+G16 类似的功能。9)鼠标右击cxGrid1DBBandedTableView1菜单里的Edit Layout什么用,怎么使用?解决:可以拖动字段,并列的可以拖成有层次感(一层层), 拖动时会显示箭头的,就是说可以拖一个字段放到最上面,就可以使记录按此字段进行分组。点击其中一个字段,上面还会出现一个上升或者下降的小三角形,这个小三角形的作用是在运行阶段,数据就会按照这个字段上升或者下降排序。还有一个Set as Default的作用是保持当前TableView的参数,下此产生新的TableView的时候就会可以和上次保持的参数一样。10)怎样将cxGrid里的数据导入到EXCEL,HTML,XML和TEXT解决:这个问题在用了cxGrid以后变得异常简单,usescxExportGrid4Link;procedure TForm1.Button1Click(Sender: TObject);beginExportGrid4ToEXCEL(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; 11)如何使满足条件的数据显示不同的颜色?解决:varAYellowStyle: 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);beginif ARecord.ValuescxGrid1DBBandedTableView1Lengthcm.Index 81 thenAStyle := AYellowStyle;end;这里cxGrid1DBBandedTableView1Lengthcm.Index小于81时就显示黄色问题12)如何从外边的TXT文件导入到cxGrid?解决: procedure CustomizeColumns;procedure LoadData;procedure TForm1.CustomizeColumns;constcDistance = 1;cRadius = 5;cPeriod = 4;cPstring = 0;varI: Integer;beginDecimalSeparator := .;with cxGrid1TableView2 dofor I := 0 to ColumnCount - 1 doif I in cDistance, cRadius thenColumnsI.DataBinding.ValueTypeClass := TcxIntegerValueType/1,5列为Integerelseif I in cPstring,cPeriod thenColumnsI.DataBinding.ValueTypeClass := TcxStringValueType/0,4列为StringelseColumnsI.DataBinding.ValueTypeClass := TcxFloatValueType;/其他为Floatend;procedure TForm1.LoadData;constAFileName = 资产负债表.txt;AHeaderLineCount = 2;varARecords, AValues: TStringList;I: Integer;procedure InitRecord(const Str: string);varJ: Integer;V: Variant;beginAValues.CommaText := Str;for J := 0 to AValues.Count - 1 doif AValues.StringsJ - thenbeginV := AValues.StringsJ;if not VarIsNull(V) thencxGrid1TableView2.DataController.ValuesI, J := V;end;end;beginif not FileExists(AFileName) thenraise Exception.Create(Data file not found);ARecords := TStringList.Create;AValues := TStringList.Create;with ARecords dotryLoadFromFile(AFileName);cxGrid1TableView2.BeginUpdate;cxGrid1TableView2.DataController.RecordCount := Count - AHeaderLineCount;for I := 0 to Count - (AHeaderLineCount + 1) doInitRecord(StringsI + AHeaderLineCount);finallycxGrid1TableView2.EndUpdate;ARecords.Free;AValues.Free;end;end;procedure TForm1.FormCreate(Sender: TObject);beginCustomizeColumns;LoadData_Zcfz;end; 其中“资产负债表.txt”中的数据如下:资 产 行次 年 初 数 期 末 数 负债及所有者权益 行次 年 初 数 期 末 数- - - - - - - -流动资产: 1 0.00 0.00 流动负债: 2 0.00 0.0013)如何改变列的颜色?varAFirstColumnStyle: TcxStyle;procedure TForm1.FormCreate(Sender: TObject);begin/列颜色AFirstColumnStyle := TcxStyle.Create(Self);AFirstColumnStyle.Color := clAqua;AFirstColumnStyle.TextColor := clBlue;cxGrid1TableView1.Columns1.Styles.Content := AFirstColumnStyle;end; 14)Set as default的用法?解决:Set as default的用法是为了解决设置参数的方便而做的,比如:连好数据库以后,更改 cxGrid1DBBandedTableView1-OptionsCustomize-ColumnFiltering 设为False。(这个设置可以将字段名的下拉单给去掉)更改 cxGrid1DBBandedTableView1-OptionsView-Navigator 设置为True。然后右击cxGrid1DBBandedTableView1,在弹出的菜单栏里面点击Set as default。 OK,下次你再产生一个新的cxGrid1DBBandedTableView1时这些设置和刚才的一样了。如果需要设置的参数很多的时候,这个Set as default很有用!15)怎样使鼠标移动时,相应的单元格里的文字变色?解决:varFTrackItem: TcxCustomGridTableItem;FTrackRec: TcxCustomGridRecord;procedure TForm1.cxGrid1DBTableView1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);beginif (AViewInfo.GridRecord = FTrackRec) and (AViewInfo.Item = FTrackItem) thenbeginACanvas.Font.Color := clred; /红色字体ACanvas.Font.Style := fsUnderline;/带下划线end;end;procedure TForm1.cxGrid1DBTableView1MouseMove(Sender: TObject;Shift: TShiftState; X, Y: Integer);varAHitTest: TcxCustomGridHitTest;ATrackItem: TcxCustomGridTableItem;ATrackRec: TcxCustomGridRecord;beginATrackItem := FTrackItem;ATrackRec := FTrackRec;AHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);if AHitTest is TcxGridRecordCellHitTest thenbeginFTrackItem := TcxGridRecordCellHitTest(AHitTest).Item;FTrackRec := TcxGridRecordCellHitTest(AHitTest).GridRecord;endelsebeginFTrackItem := nil;FTrackRec := nil;end;if (ATrackItem FTrackItem) or (ATrackRec FTrackRec) thenbegin/ Invalidate old cellif ATrackRec nil thenATrackRec.Invalidate(ATrackItem);/ Invalidate new cellif FTrackRec nil thenFTrackRec.Invalidate(FTrackItem);end;end; 16)怎样设计多表头的cxGr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论