TcxGridLevel组件: 属性: Active: 读写激活该层; Controls: 读写指向TCXGrid;
CanBeVisible: 读取是否能设置可见; Count: 读取子层个数; Displaycaption: 读取层标题; IsMaster: 读取是否cxgrid的最上层; Items: 读取层组,例: Items[0]访问第一个层; Level: 读取层级数; VisibleCount: 读取可见层个数 VisibleIndex: 读取可见索引个数 VisibleItems: 读取可见层组,例:VisibleItems[0]访问第一个可见层 Caption: 读写层标题; GridView: 指定或读取该层的Grid显示;
ImageIndex: 读写图标索引 Options: TcxGridLevelOptions选项 DetailFrameColor: 读或写明细表格颜色 DetailFramWidth: 读或写明细表格 DetailTabsPosition: 读或写Tab位置,类似PageControlsTabs Styles: 样式 Tab: 读或设置tab样式 tabsBackground: 读或设置tab背景样式 Visible: 读或设置是否可见 方法: Add: 增加一个Level; Levels[i].Add:增加一个子Level; TcxGridDBBandedTableView组件: 属性: BackGroundBitmaps:背景图片选项 Background:背景图 Bandbackground:带背景图 Bankheader:带头背景 Content:细节区背景 filterBox:过滤区背景 footer:注脚背景 group: 组背景 header:列头背景 preview:预览区背景 Bands:带列表 DataController: 数据控制 DataSource:数据源 DetailKeyFieldNames:主从表时设置细表键字段名 KeyFieldNames: 主从表时设置关键字段名 MasterKeyFieldNames:主从表时设置主表键字段名 Summary:合计组 FooterSummaryItems:注脚定义 FooterSummaryItems:组脚定义 FilterBox:过滤框 CustomizeDialog:是否自定义过滤条件 Position:过滤框显示位置 Visible:显示过滤框 NavigatorButtons:导航条设置 Append:增加按钮设置 Enabled:是否禁用该按钮 Visible:是否显示该按钮
ImageIndex:图标ID Cancel:取消按钮设置,具体设置同Append; ConfirmDelete:删除时是否确认提示 Delete: 具体设置同Append; Edit: 具体设置同Append; First: 具体设置同Append; Insert: 具体设置同Append; Last: 具体设置同Append; Next: 具体设置同Append; Filter: 具体设置同Append; GotoBookmark: 具体设置同Append; NextPage: 具体设置同Append; Post: 具体设置同Append; Prior: 具体设置同Append; PriorPage: 具体设置同Append; Refresh: 具体设置同Append; SaveBookmark: 具体设置同Append; OptionsBehavior:行为选项 AlwaysShowEditor:是否总是显示编辑条 BandHeaderHints:带头是否显示提示 CellHints:单元格是否显示提示 ColumnHeaderHints:列头是否显示提示 CopyCaptionsToClipboard:是否允许复制标题到剪贴板 CopyPreviewToClipboard:是否允许复制预览内容到剪贴板 ExpandMasterRowOnDblClik:是否允许双击行显示明细 FocusFirstCellOnNewRecord:新增记录时是否焦点指向第一列单元格 GoToNextCellOnEnter:按回车是否自动跳到下一单元格 NavigatorHints:是否显示导航条提示 OptionsCustomize:自定义选项 BandHiding:是否显示带 BandMoving:是否允许拖动带 ColumnFiltering:是否允许列过滤 ColumnGrouping:是否允许列分组 ColumnHiding:列头是否隐藏 ColumnHorzSizing:是否允许调整列宽度 ColumnMoving:是否允许列拖动 ColumnSorting:是否允许列排序 ColumnVertSizing:是否允许调整列高度 DataRowSizing:是否允许调整数据行高度 GroupBySorting:是否允许组排序 GroupRowSizing:是否允许调整组行高度 OptionData: 允许数据操作 Appending: 是否允许增加 CancelOnExit: 退出时是否自动取消修改 Deleting: 是否允许删除 DeletingConfirmation: 删除是否提示 Editing :是否允许编辑 Inserting: 是否允许插入 OptionsSelection: 单元格操作 CellMultiSelect:是否允许选择多单元格 CellSelect: 进入单元格是否选择 InvertSelect: 是否允许转换选择 MultiSelect: 是否允许多行选择 HideFocusRectOnExit: 移开是否隐藏焦点 UnselectFocusedRecordOnExit:移开是否允许取消焦点 OptionsView:表格选项 BandCaptionsInColumnAlternateCaption:是否允许在列里修改带标题 BandHeaderHeight: 带头高度 BandHeaderLineCount: 带头显示行数 BandHeaders: 是否显示带头 CellAutoHeight:单元格是否自动高度 CellTextMaxLineCount: 单元格文本最大行数 ColumnAutoWidth: 列是否自动宽度 DataRowHeight: 数据行高度 Footer:是否允许显示注脚 FooterAutoHeight: 注脚是否自动适应高度 FooterMultiSummaries:是否允许多注脚 GridLineColor:表格行线颜色 GridLines:显示表格行线类型 GroupByBox:是否允许拖动列到分组区进行分组 GroupFooters:显示组脚类型 Header:是否显示列头 HeaderAutoHeight:列头是否自动适应高度 HeaderHeight: 列头高度 IndicatorWidth:是否显示左边指示条 IndicatorWidth: 指示条宽度 Navigator: 是否显示导航条 NavigatorOffSet: 导航条偏移位置 ShowColumnFilterButtons: 是否显示列过滤按钮 ShowEditButtons: 是否显示编辑按钮 Preview:预览选项 AutoHeight:是否自动适应高度 Column:要预览的列,只能选一列 LeftIndent: 左缩进点数 MaxLineCount:最大显示行数 RightIndent:右缩进点数 Visible: 预览是否可见
PopupMenu:弹出菜单 Styles:样式或风格组 BackGround:背景风格 Content:明细风格 Footer:注脚风格 Group:组风格 GroupSummary:组合计区风格 Header:头风格 Indicator:指示区风格 Preview:预览区风格 Selection:选择区风格 StyleSheet:风格组,选中后自动设置各区风格
方法或函数: CreateColumn:
参数:无; 功能:新建一列; 返回:返回列类型结果; GetColumnByFieldName: 参数:字段名串; 功能:取得指定字段列; 返回:返回列类型结果; 例:MyTV.GetColumnByFieldName('First').Visible := False; CleaarItems: 参数:无; 功能:清除全部显示列; 返回:无 CreateItem: 参数:无; 功能:建一显示列; 返回:列类型值 StoreToIniFile:导出布局到Ini文件 StoreToRegistry:导出布局到注册表 StoreToStream:导出布局到流体 RestoreFromIniFile: 从Ini文件恢复布局 RestoreFromRegistry:从注册表恢复布局 RestoreFromStream:从流体恢复布局 FindItemByID:根据ID号查找列 FindItemByName:根据列名查找列 FindItemByTag:根据Tag查找列 IndexofItem:返回列的序号 CreateViewInfo:建表格 TCXGRID用法指南
假设已设定以下变量 MycxGrid: TcxGrid; MycxGridLevel: TcxGridLevel; MyTV: TcxGridDBTableView; MyDataSource: TDataSource; 方法: 一、 建层和层视图 MycxGrid := TcxGrid.Create(self); MycxGridLevel := MycxGrid.Levels.Add; //建层 MyTV:= TcxGridDBTableView(MycxGrid.createview(TcxGridDBTableView));//建视图 MycxGridLevel.Control := MycxGrid;//指定关系 MycxGridLevel.GridView := MyTV;//指定视图 TcxGridDataController(GetDetailDataController(FocusedRecordIndex, 0)).GridView;//得到下层视图 二、设定表格位置和大小 MycxGrid.ParentWindow := self.Handle; MycxGrid.Top := 0; MycxGrid.Height := 200; MycxGrid.Width := 400; MyTV.Preview.visible := true; 三、 设定数据源及分配全部字段 MyTV.DataController.DataSource := MyDataSource; MyTV.DataController.DeleteAllItems; //清除全部字段 MyTV.DataController.CreateAllItems; //建全部显示字段
四、 动态增加显示列及列访问 var iIndex: integer; vCol: TcxGridDBColumn; vImgCom: TcxImageComboBoxItem; i,j: integer; for i:= 0 to Mydatasource.dataset.FieldCount -1 do begin vCol := MyTV.CreateColumn; vCol.DataBinding.FieldName:=Mydatasource.dataset.Fields[i].FieldName; if (i = 1) then begin vCol.PropertiesClassName := 'TcxImageComboBoxProperties'; ////分区分大小写 vCol.DataBinding.ValueType := 'String'; for j := 0 to 5 do begin vImgCom:=TcxImageComboBoxProperties(vCol.Properties).Items.Add; vImgCom.Description := IntToStr(j); vImgCom.Value := IntToStr(j); end; end; end; showmessage(MyTV.Columns[0].Caption);//列标题访问 showmessage(MyTV.Columns[0].DataBinding.FieldName);//列字段名访问 MyTV.Columns[0].SortIndex := 0; MyTV.Columns[0].SortOrder := soAscending; //列升序排序 MyTV.Columns[0].SortIndex := -1; MyTV.Columns[0].SortOrder := soNone; //取消列排序 MyTV.DataController.Search.Locate(MyTV.GetColumnByFieldName(FieldName).Index, 查找值);// 列值搜索 MyTV.DataController.FocusedRowIndex := MyTV.DataController.FocusedRowIndex - 1;//记录回翻,即Prior; DBView.DataController.FocusedRowIndex := DBView.DataController.FocusedRowIndex + 1; //记录后翻,即Next; Aa:=MyTV.datacontroller.values[1,1] ;// 访问第二行第二列的值 MyTV.Columns[0].DataBinding.ValueTypeClass := TcxStringValueType;//设置列字段类型, 其他如整型[TcxIntegerValueType],浮点型[TcxFloatValueType];
//设置列风格: MyFirstColumnStyle := TcxStyle.Create(Self); MyFirstColumnStyle.Color := clAqua; MyFirstColumnStyle.TextColor := clBlue; MyTV.Columns[1].Styles.Content := MyFirstColumnStyle;
//设置列下拉框选择列表及类型 var A:TDataSource: B:TcxlookupcomboboxProperties; begin A:=TDataSource.create(self); B:=tcxlookupcomboboxproperties.create(self); A.Dataset:=Dic_ry_xb;//此处指定数据源。 B.listdource:=A;//此处指明字段的listsource属性。 B.keyfieldnames:='a'; //此处指明字段的关键字段 B.listfieldnames:='b'; //此处指明字段的返回值。 B.listcolumns.items[0].caption:='x’; //此处默认是会建立一个字段,但是显示的表头是name,所以此处让它显示为自己想要的中午显示。 MYTVc1_sex_code.Properties:=B; //此处指明是那个字段。 end;
五、 设置列外观 MyTV.OptionsView.ColumnAutoWidth := true //列自动宽度 MyTV.OptionsView.CellAutoHeight := true //单元自动高度 MyTV.OptionsView.Footer := true //表格合计行显示 MyTV.OptionsView.Header := true // 表格头显示 MyTV.OptionsView.Indicator := true //显示指示条 MyTV.OptionsView.GroupByBox:=true //显示分组框 MyTV.Preview := True //显示预览区
六、 设置表格样式 var MyStyleSheet:TcxGridTableViewStyleSheet; MyStyle :TcxStyle; begin MyStyleSheet := TcxGridTableViewStyleSheet.Create(); MyStyle := TcxStyle.Create(self); MyStyle.Color := clBlack; MyStyle.TextColor := clWrite; MyTV.Styles.Background := MyStyle; //设置背景样式 MyStyleSheet.AddStyles(MyStyle);//分配样式 cxStyleRepository.CreateStyleSheet(MyStyleSheet); MyTV.Styles.StyleSheet := cxStyleRepository; //分配样式 End; 七、 设置Preview列 前提条件是设置footer=true; MyTV.Preview.column := MyTVField1;//设置预览列 MyTV.Preview.MaxLineCount := 4;//设置预览列最大显示行数 MyTV.Preview.LeftIndent :=150; //显示左缩进 MyTV.Preview.RightIndent :=150;//显示右缩进 八、 Footer设置
Var ASummary: TcxDataSummary; MyFooterItems :TcxDataFooterSummaryItems; Acolumn :TcxGridDBColumn; ASummary := MyTV.DataController.Summary; //提取Footer; MyFooterItems := ASummary.FooterSummaryItems; //提取FooterItems; //增加FooterItems With TcxGridDBTaleSummaryItem(MyFooterItems.add) do Begin try Try Beginupdate; Column := TcxGridDBColumn(MyTV.VisibleColumns[0]; //Footer显示列位置 AColumn := TcxGridDBColumn(MyTV.VisibleColumns[0]; If assigned(AColumn) then FieldName := AColumn.dataBinding.FieldName; //Footer计算字段 Kind := TcxSummaryKind(skSum); //skNone=无.skSum=合计;skMax=取最大值, //skCount=//记录数,skAverage=平均数 Finally Endupdate; End; Except Showmessage(‘error’); MyFooterItems.Items[MyFooterItems.Count-1].Free;//报错释放刚加入的 End; End;
//删除FooterItems MyFooterItems := TcxGridDBTableSummaryItem(MyFooterItems[0]); If MyFooterItems.FieldByName<>’’ then For i:= 0 to MyTV.VisibleColumnCount -1 do Begin AColumn := TcxGridDBColumn(MyTV.VisibleColumns[i]); If AColumn.DataBinding.FieldName = MyFooterItems.FieldName then Break; End; If Assigned(MyFooterItems.Column) then MyFooterItems.Items[0].Free;
九、 建Band Var MyBand : TcxGridBand; MyBandViewInfo: TcxGridbandViewInfo; MyBand := MyTV.Bands.Add; MyBand.Caption : =’新建带’; MyBandViewInfo:= MyTV.ViewInfo.HeaderViewInfo.BandsViewInfo[MyBand.visibleIndex]; MyTV.Controller.LeftPos := MyBandViewInfo.Bounds.right; 十、 主从表明细嵌套关联设置 MyTV.DetailKeyFieldNames := mastered; //主表关键列 MyTV.KeyFieldNames := ID; //子表对应关键列 MasterKeyFieldNames := ID;//子表自己的关键列 子表ADOQUERY的indexFieldNames := mastered;
十一、组设置 MyTV.DataController.Groups.FullExpand;//组展开 MyTV.DataController.Groups.Collapse;//组收缩
十二、记录操作 MyTV.Datacontroller.Append;//增加记录 MyTV.Datacontroller.Insert;//插入记录 MyTV.Datacontroller.Values[0.1]:=’a’;//单元格赋值 MyTV.Datacontroller.Cancel;//取消修改 MyTV.Datacontroller.Post;//提交保存 MyTV.Datacontroller.DeleteFocused;//删除当前记录 MyTV.Controller.Controller.FocusedRow.IsFirst ;//是否第一行 MyTV.Controller.Controller.FocusedRow.IsLast ;//是否最后行 MyTV.DataController.Options.FocusTopRowAfterSorting :=True;//排序后指向第一行 MyTV.ViewInfo.VisibleRecordCount ;可见行数