云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > delphi控件cxGrid用法大全

delphi控件cxGrid用法大全

  • 62 次阅读
  • 3 次下载
  • 2025/5/6 21:51:12

Result := LoopThroughLevels(AGrid.Levels[I], ALevelName); if Result <> nil then Exit; end; end; end;

**************************************************************************** 49 指定Filter Builder打开/保存过滤文件的默认路径 解决: uses

..., cxFilterControlDialog;

procedure TForm.GridView1FilterControlDialogShow( Sender: TObject); begin

TfmFilterControlDialog(Sender).OpenDialog.InitialDir := 'D:/' end;

**************************************************************************** 50 保存/恢复带汇总行的布局

.StoreToIniFile('c:\\Grid.ini', True, [gsoUseSummary]);

.RestoreFromIniFile(,True,False {or True, optional},[gsoUseSummary]);

**************************************************************************** 51 取消过滤时移到第一行 解决: uses

cxCustomData;

procedure TYour_Form.AViewDataControllerFilterChanged(Sender: TObject); var

Filter: TcxDataFilterCriteria; begin

with Sender as TcxDataFilterCriteria do if IsEmpty then

DataController.FocusedRowIndex := 0; end;

**************************************************************************** 52 排序后移到第一行 解决:

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

cxCustomData;

procedure TYour_Form.Your_ViewDataControllerSortingChanged(Sender: TObject); begin

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

**************************************************************************** 53 判断当前行是否第一行或最后一行 解决:

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

**************************************************************************** 54 根据指定值查找记录 解决:

DataController提供了好几个方法来得到指定值对应的RecordIndex 对于Bound View可以使用FindRecordIndexByKeyValue方法 **************************************************************************** 55 编辑和显示Blob字段 解决:

该字段的Properties设置为BlobEdit,并将BlobPaintStyle 属性设为 bpsText **************************************************************************** 56 得到可见行数 解决:

.ViewInfo.VisibleRecordCount

**************************************************************************** 57 保存后的行设置为当前行 解决: 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.

**************************************************************************** 58 删除记录并获得焦点

解决:

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;

**************************************************************************** 59 cxGrid的 TableView 数据排序与对应的数据集同步 解决:

COPYRIGHT BY cnCharles, ALL RIGHTS RESERVED. delphi群: 16497064, blog: http://hi.http://www.njliaohua.com//cnCharles

//描述: cxGrid的 TableView 数据排序与对应的数据集同步, 该方法主要用于打印时 // 的排序与所见到的排序保持一致; //参数: @tv: 排序的cxGridTableView

//说明: @tv: 对应的数据集只支持 ADOQuery与 ClientDataSet;

procedure cxGridSortSyncToDataSet(tv: TcxGridDBTableView); overload; //描述: 功能同上, 实现代码一样, 如果有更改就同步更改

procedure cxGridSortSyncToDataSet(tv: TcxGridDBBandedTableView); overload; procedure cxGridSortSyncToDataSet(tv: TcxGridDBTableView); const

SortArray: array[soAscending..soDescending] of string = (’ASC’, ’DESC’); var

AscFields, DescFields, S, SortOrder: string; IndexPrint: string; I: integer; Index: integer; cds: TClientDataSet;

搜索更多关于: delphi控件cxGrid用法大全 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Result := LoopThroughLevels(AGrid.Levels[I], ALevelName); if Result nil then Exit; end; end; end; **************************************************************************** 49 指定Filter Builder打开/保存过滤文件的默认路径 解决: uses ..., cxFilterControlDialog; procedure TForm.Grid

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com