cxGrid的使用方法 联系客服

发布时间 : 星期六 文章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>\ 字符串已经显示,需要调用: .LayoutChanged;

============================================================

删除应用过滤后的行

var

I: Integer; begin

with do

for I := 0 to ViewData.RecordCount - 1 do begin

ViewData.Records[0].Focused := True; DataController.DataSet.Delete; end;

=============================================================

根据单元的值设置样式

procedure .StylesGetContentStyle(

Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); begin

if ARecord.Values[AItem.Index] = aSomeValue then AStyle := ; end;

procedure .StylesGetContentStyle(

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 := .CreateView(TcxGridDBBandedTableView);

TcxGridDBBandedTableView(AView).DataController.DataSource := ; TcxGridDBBandedTableView(AView).Bands.Add;

with TcxGridDBBandedTableView(AView).Bands.Add do begin

Visible := False; FixedKind := fkLeft; end;

TcxGridDBBandedTableView(AView).DataController.CreateAllItems; .GridView := AView;

此楼回复Re:

======================================================================