cxGrid技巧汇总一些常用代码文档格式.docx
- 文档编号:5745082
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:17
- 大小:20.12KB
cxGrid技巧汇总一些常用代码文档格式.docx
《cxGrid技巧汇总一些常用代码文档格式.docx》由会员分享,可在线阅读,更多相关《cxGrid技巧汇总一些常用代码文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
);
//如果"
字符串已经显示,需要调用:
View>
.LayoutChanged;
============================================================
删除应用过滤后的行
I:
Integer;
with<
GridView>
do
forI:
=0toViewData.RecordCount-1do
ViewData.Records[0].Focused:
=True;
DataController.DataSet.Delete;
根据单元的值设置样式
procedure<
aForm>
.<
aColumn>
StylesGetContentStyle(
Sender:
ARecord:
TcxCustomGridRecord;
AItem:
TcxCustomGridTableItem;
outAStyle:
TcxStyle);
ifARecord.Values[AItem.Index]=aSomeValuethen
AStyle:
=<
aSomeStyle>
;
aView>
AColumn:
AColumn:
=(SenderasTcxGridDBTableView).GetColumnByFieldName('
Email'
ifVarToStr(ARecord.Values[AColumn.Index])='
then
=cxStyleNullEmail;
TcxCustomGridTableView.FindItemByName,TcxGridDBTableView.GetColumnByFieldNameor
TcxGridDBDataController.GetItemByFieldName
withcxGrid1DBBandedTableView1.DataControllerdo
AValue:
=Values[FocusedRecordIndex,GetItemByFieldName('
SomeFieldName'
).Index];
动态生成BandedView
TcxCustomGridView;
cxGrid>
.CreateView(TcxGridDBBandedTableView);
TcxGridDBBandedTableView(AView).DataController.DataSource:
DataSource>
TcxGridDBBandedTableView(AView).Bands.Add;
withTcxGridDBBandedTableView(AView).Bands.Adddo
Visible:
=False;
FixedKind:
=fkLeft;
TcxGridDBBandedTableView(AView).DataController.CreateAllItems;
cxGridLevel>
.GridView:
=AView;
当底层数据集为空时显示一条空记录
Form>
Enter(Sender:
TObject);
View:
TcxGridDBTableView;
View:
=TcxGridDBTableView((SenderasTcxGrid).FocusedView);
ifView.DataController.DataSet.IsEmptythen
View.DataController.DataSet.Append;
View.Controller.EditingController.ShowEdit;
在当前View插入记录
使用FocusedView属性得到当前焦点View,用View.DataController得到对应的DataController,
之后使用DataController的方法来操作数据:
-Append
-Insert
-Post
-Cancel
-DeleteFocused
-DeleteSelection
示例:
ARecIndex:
…
View.DataController.Append;
ARecIndex:
=View.DataController.FocusedRecordIndex;
View.DataController.Values[ARecIndex,SomeItemIndex]:
=SomeValue;
View.DataController.Post;
另外一种方法是使用View.DataController.DataSource.DataSet得到底层数据集后,再用数据集的
方法来操作数据。
激活内置编辑控件
1)<
.Controller.EditingController.ShowEdit(<
2)<
.Controller.EditingController.StartEditShowingTimer(<
3)<
.Controller.EditingItem:
4)<
.Editing:
隐藏内置编辑控件
.Controller.EditingController.HideEdit(True);
移除一个分组列
.GroupIndex:
=-1;
.Visible:
保存修改到数据库
.FormClose(Sender:
TObject;
varAction:
TCloseAction);
if(<
aGrid>
.FocusedView<
>
nil)and(<
.FocusedView.DataController.EditState<
[])then
.FocusedView.DataController.Post;
设置内置右键菜单
内置右键菜单包括二个菜单:
cxGridStdHeaderMenu,TcxGridStdFooterMenu
usescxGridStdPopupMenu;
procedureTForm1.cxGridPopupMenu1Popup(ASenderMenu:
TComponent;
AHitTest:
TcxCustomGridHitTest;
X,Y:
varAllowPopup:
Boolean);
ifASenderMenuisTcxGridStdHeaderMenuthen
TcxGridStdHeaderMenu(ASenderMenu).OnPopup:
=StdHeaderMenuPopup;
procedureTForm1.StdHeaderMenuPopup(Sender:
withTcxGridStdHeaderMenu(Sender).Itemsdo
=0toCount-1do
ifItems[I].Caption='
GroupByBox'
Items[I].Enabled:
System.Break;
end
得到选中记录的值
1)View.DataController.DataModeController.GridMode=False时
RecIdx:
=View.Controller.SelectedRecords[i].RecordIndex;
ColIdx:
=View.DataController.GetItemByFieldName(AFieldName).Index;
OutputVal:
=View.DataController.Values[RecIdx,ColIdx];
//RecID:
=View.DataController.GetRecordId(RecIdx);
//OutputVal:
=ADataSet.Lookup(View.DataController.KeyFieldNames,RecID,AFieldName);
2)View.DataController.DataModeController.GridMode=True时
Bkm:
=View.DataController.GetSelectedBookmark(ASelectedRecordIndex);
ifADataSet.BookmarkValid(TBookmark(Bkm))then
ADataSet.Bookmark:
=TBookmark(Bkm);
=ADataSet.FieldByName(AFieldName).Value;
View.BeginUpdate;
View.DataController.BeginLocate;
try
//makechangeshere…
finally
View.DataController.EndLocate;
View.EndUpdate;
在GridMode禁用内置的右键Footer菜单
procedurecxGridPopupMenuOnPopup(...)
if(ASenderMenuisTcxGridStdFooterMenu)and
.DataController.DataModeController.GridModethen
AllowPopup:
主从表任何时候只能展开一个组
procedureTForm1.ADetailDataControllerCollapsing(
ADataController:
TcxCustomDataController;
ARecordIndex:
varAAllow:
C:
AAllow:
C:
=0;
=0toADataController.RecordCount-1do
ifADataController.GetDetailExpanding(I)then
Inc(C);
ifC>
1then
procedureTForm1.ADetailDataControllerExpanding(
ADataController.CollapseDetails;
procedureTForm1.FormCreate(Sender:
cxGrid1DBTableView1.DataController.OnDetailExpanding:
=ADetailDataControllerExpanding;
cxGrid1DBTableView1.DataController.OnDetailCollapsing:
=ADetailDataControllerCollapsing;
动态创建层次(Level)和视图(View)
Grid:
TcxGrid;
Level:
TcxGridLevel;
//CreatesaGridinstance
Grid:
=TcxGrid.Create(SomeOwner);
Grid.Parent:
=SomeParent;
//CreatesaLevel
Level:
=Grid.Levels.Add;
Level.Name:
='
SomeLevelName'
//CreatesaView
=Grid.CreateView(TcxGridDBTableView)asTcxGridDBTableView;
View.Name:
SomeViewName'
//…andbindsittotheLevel
Level.GridView:
=View;
//HooksuptheViewtothedata
View.DataController.DataSource:
=SomeDataSource;
//…andcreatesallcolumns
View.DataController.CreateAllItems;
获得GroupFooter合计行对应的记录
procedureTForm1.cxGrid1DBTableView1CustomDrawFooterCell(
TcxGridTableView;
ACanvas:
TcxCanvas;
AViewInfo:
TcxGridColumnHeaderViewInfo;
varADone:
ALevel,ADataGroupIndex:
AGridRecord,AGroupRecord:
ifAViewInfoisTcxGridRowFooterCellViewInfoand//Rowfooter
(TcxGridDBColumn(AViewInfo.Column).DataBinding.FieldName='
Area'
)then//Areacolumn
AGridRecord:
=TcxGridRowFooterCellViewInfo(AViewInfo).GridRecord;
ALevel:
=TcxGridRowFooterCellViewInfo(AViewInfo).Container.GroupLevel;
ADataGroupIndex:
=Sender.DataController.Groups.DataGroupIndexByRowIndex[AGridRecord.Index];
ifADataGroupIndex<
-1then
AGroupRecord:
=AGridRecord;
whileAGroupRecord.Level<
ALeveldo
=AGroupRecord.ParentRecord;
AViewInfo.Text:
=AGroupRecord.DisplayTexts[0];
访问过滤之后的记录
Memo1.Lines.Clear;
=0toFilteredRecordCount-1do
Memo1.Lines.Add(DisplayTexts[FilteredRecordIndex[I],0]);
======================================================================
获得单元的Font
cxGrid1DBTableView1.ViewInfo.RecordsViewInfo.Items[1].GetCellViewInfoByItem(
cxGrid1DBTableView1Company).EditViewInfo.Font;
根据Level名称找到Level对象
functionGetLevelByName(AGrid:
ALevelName:
string):
functionLoopThroughLevels(ALevel:
Result:
=nil;
=0toALevel.Count-1do
ifALevel[I].Name=ALevelNamethen
=ALevel[I];
Exit;
ifALevel[I].Count>
0then
=LoopThroughLevels(ALevel[I],ALevelName);
ifResult<
nilthen
=0toAGrid.Levels.Count-1do
ifAGrid.Levels[I].Name=ALevelNamethen
=AGrid.Levels[I];
ifAGrid.Levels[I].Count>
=LoopThroughLevels(AGrid.Levels[I],ALevelName);
nilthe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cxGrid 技巧 汇总 一些 常用 代码