当前位置:首页 > cxGrid的使用方法
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;
此楼回复Re:
借贵地一用,问个CXGrid问题,在cxgrid中如何使一些行不能编辑,如:字段isenable = false的行
此楼回复Re:
楼上的问题 请参考下面的技巧
技巧四:根据某列的值设定其它列的可编辑性
procedure TFormUser.tvUserEditing(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; var AAllow: Boolean); begin
//如果第三列值为True,则第4列不能修改
if (tvUser.Controller.FocusedRecord.Values[2] = True) and (AItem.Index = 4) then AAllow := False else
AAllow := True; end;
此楼回复Re:
技巧五:保存/恢复Grid布局
//恢复布局
IniFileName := ExtractFilePath(Application.ExeName) + 'Layout\\' + Self.Name + '.ini'; if FileExists(IniFileName) then
Self.tvResult.RestoreFromIniFile(IniFileName) //从布局文件中恢复 else
begin
Self.tvResult.BeginUpdate;
for i := 0 to Self.tvResult.ItemCount - 1 do Self.tvResult.Items[i].ApplyBestFit; //调整为最佳宽度 Self.tvResult.EndUpdate; end;
//保存布局
IniFileName := ExtractFilePath(Application.ExeName) + 'Layout\\' + Self.Name + '.ini'; if not DirectoryExists(ExtractFileDir(IniFileName)) then CreateDir(ExtractFileDir(IniFileName));
Self.tvResult.StoreToIniFile(IniFileName); //保存为布局文件
此楼回复Re:
借用地问一下:在 cxgrid中,如果我同时选中主表与子表中的记录,怎幺样能同时进行对其所选记录进行处理呢。
我现在只能判断 焦点是在主表还是从表中,然后只能对主表或子表中的数据进行处理。
此楼回复Re:
看来用cxGrid人不多啊
再多贴一些技巧,需要的朋友顶一下
==========================================================================
在主从TableView中根据主TableView得到对应的从TableView
var
ADetailDC: TcxGridDataController; AView: TcxCustomGridTableView; begin
with cxGrid1DBTableView1.DataController do
ADetailDC := TcxGridDataController(GetDetailDataController(FocusedRecordIndex, 0)); AView := ADetailDC.GridView; end;
==============================================================================
定位在第一行并显示内置编辑器
cxDBVerticalGrid1.FocusedRow := cxDBVerticalGrid1.Rows[0];
cxDBVerticalGrid1.ShowEdit;
==============================================================================
隐藏 \ data to display>\ 字符串
该文本存储在scxGridNoDataInfoText资源字符串,可以将该资源字符串的内容设为空 来隐藏该文本。
uses cxClasses, cxGridStrs; ...
cxSetResourceString(@scxGridNoDataInfoText, '');
//如果\ data to display>\ 字符串已经显示,需要调用:
============================================================
删除应用过滤后的行
var
I: Integer; begin
with
for I := 0 to ViewData.RecordCount - 1 do begin
ViewData.Records[0].Focused := True; DataController.DataSet.Delete; end;
=============================================================
根据单元的值设置样式
procedure
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); begin
if ARecord.Values[AItem.Index] = aSomeValue then AStyle :=
procedure
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); var
AColumn: TcxCustomGridTableItem;
begin
AColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName('Email'); if VarToStr(ARecord.Values[AColumn.Index]) = '' then AStyle := cxStyleNullEmail; end;
==============================================================================
TcxCustomGridTableView.FindItemByName, TcxGridDBTableView.GetColumnByFieldName or TcxGridDBDataController.GetItemByFieldName
with cxGrid1DBBandedTableView1.DataController do
AValue := Values[FocusedRecordIndex, GetItemByFieldName('SomeFieldName').Index];
===================================================================
动态生成BandedView
var
AView: TcxCustomGridView; begin
AView :=
TcxGridDBBandedTableView(AView).DataController.DataSource :=
with TcxGridDBBandedTableView(AView).Bands.Add do begin
Visible := False; FixedKind := fkLeft; end;
TcxGridDBBandedTableView(AView).DataController.CreateAllItems;
此楼回复Re:
======================================================================
共分享92篇相关文档