第一范文网 - 专业文章范例文档资料分享平台

cxGrid的使用方法

来源:用户分享 时间:2025/5/25 0:21:40 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

cxCustomData;

procedure TYour_Form.AViewDataControllerFilterChanged(Sender: TObject); var

Filter: TcxDataFilterCriteria;

begin

with Sender as TcxDataFilterCriteria do if IsEmpty then

DataController.FocusedRowIndex := 0; end;

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

排序后移到第一行

可以设置DataController.Options.FocusTopRowAfterSorting := True,也可以使用如下的代码:

uses

cxCustomData;

procedure TYour_Form.Your_ViewDataControllerSortingChanged(Sender: TObject); begin

TcxCustomDataController(Sender).FocusedRowIndex := 0; end;

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

判断当前行是否第一行或最后一行

可以使用DataController的IsBOF, IsEOF方法,或者: .Controller.Controller.FocusedRow.IsFirst .Controller.Controller.FocusedRow.IsLast

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

根据指定值查找记录

DataController提供了好几个方法来得到指定值对应的RecordIndex 对于Bound View可以使用FindRecordIndexByKeyValue方法

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

编辑和显示Blob字段

该字段的Properties设置为BlobEdit,并将BlobPaintStyle 属性设为 bpsText

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

得到可见行数

.ViewInfo.VisibleRecordCount

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

保存后的行设置为当前行

const

CM_SETFOCUSEDRECORD = WM_USER + 1002;

type

TForm1 = class(TForm)

cxGrid1DBTableView1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid;

dxMemData1: TdxMemData;

dxMemData1Field1: TStringField; dxMemData1Field2: TIntegerField; DataSource1: TDataSource;

cxGrid1DBTableView1RecId: TcxGridDBColumn; cxGrid1DBTableView1Field1: TcxGridDBColumn; cxGrid1DBTableView1Field2: TcxGridDBColumn; Timer1: TTimer;

CheckBox1: TCheckBox;

procedure Timer1Timer(Sender: TObject);

procedure dxMemData1AfterPost(DataSet: TDataSet); procedure CheckBox1Click(Sender: TObject);

private

procedure CMSetFocusedRecord(var Msg: TMessage); message CM_SETFOCUSEDRECORD;

public

{ Public declarations }

end;

var

Form1: TForm1; FocusedIdx: Integer;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);

begin

dxMemData1.AppendRecord(['', IntToStr(Random(1000)), Random(1000)]); end;

procedure TForm1.dxMemData1AfterPost(DataSet: TDataSet); begin

PostMessage(Handle, CM_SETFOCUSEDRECORD, Integer(cxGrid1DBTableView1), MakeLParam(cxGrid1DBTableView1.Controller.FocusedRowIndex, cxGrid1DBTableView1.Controller.TopRowIndex)); end;

procedure TForm1.CMSetFocusedRecord(var Msg: TMessage); begin

TcxGridDBTableView(msg.WParam).Controller.FocusedRowIndex := Msg.LParamLo; TcxGridDBTableView(msg.WParam).Controller.TopRowIndex := Msg.LParamHi; end;

procedure TForm1.CheckBox1Click(Sender: TObject); begin

Timer1.Enabled := TCheckBox(Sender).Checked; end;

end.

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

删除记录并获得焦点

procedure TForm1.BtnDeleteClick(Sender: TObject); var

FocusedRow, TopRow: Integer; View: TcxGridTableView;

DataController: TcxGridDataController;

begin

View := cxGrid1.FocusedView as TcxGridTableView; DataController := View.DataController;

// Remember the top row (the vertical scrollbar position) TopRow := View.Controller.TopRowIndex;

// Remember the focused row(!) index

FocusedRow := DataController.FocusedRowIndex;

DataController.DeleteFocused;

// After deletion the same row must be focused,

// although it will correspond to a different data record DataController.FocusedRowIndex := FocusedRow; // Restore the top row

View.Controller.TopRowIndex := TopRow; end;

//====================================================================================

报表汇总的设置

数据库中的财务表为:

ID 收支类型 金额 其它属性

其中收支类型只有两种值:0 表示收入,1 表示支出 ;金额都是正数。

设置cxGrid的Footer 可以使得在显示时,列表的下方出现汇总行:“金额”的和 同样设置Default For Groups可以使得在用户拖动表头属性实现分组时,显示组内的汇总行:“金额”的和。

上面说的,用过cxGrid应该都会,下面就有这幺一个问题

如果我想使汇总行的值变为如下的值应该怎样实现:

收支类型为0的金额的和 - 收支类型为1的金额的和

实现Footer的功能好办,因为它的值不会变,自己用循环写一个就完了,但是Default For Groups的功能就不好说了,因为它的值是根据用户拖动的属性计算的,而且还有可能是多层分组,想不出来了,所有到这来问 是不是要设置什幺属性?或者cxGrid根本就没这个功能,那该用什幺方法解决?希望哪位帮我解决,谢谢了先!

给你一个例子,可能对你有帮助,

with tvOrders.DataController.Summary do

begin

BeginUpdate; try

搜索更多关于: cxGrid的使用方法 的文档
cxGrid的使用方法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4a9x70y9la38gut0yjrz_7.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top