1. CxGrid汇总成果
① OptionsView-Footer设置为True,显示页脚 ② CxGrid的Summary选项卡界说要汇总的列和字段名及汇总方法,Footer选项卡界说单个汇总,Default For Groups界说按组汇总。OptionsView-GroupFooters设置为gfAlwaysVisible则显示按组汇总。设置后界面如图。
2. CxGrid的样式设置
当设置了Kind时,NativeStyle必需设置为False,如果指定了SkinName则Kind属性掉效。
下图是设置skinname为MoneyTwins后效果
4. 取某个单元格的值
Cxgrid.DataController.Values[i,j]
5. 列操纵,选择CxGrid控件后,点击“Customize”新建一列,在Columns调集中选中新建的列,选择propertites属性可以设置该列的显示形式。下面介绍常用的几个
① Properties选择CheckBox,则该列显示一个复选框,如下:
判断是否选中 if Cxgrid.DataController.Values[i,j]=’1’ 选中② Properties选择ButtonEdit,并对该列的属性编纂器设置如部属性Buttons属性添加按钮项,对按钮项设置可以设置kind属性界说按钮样式;ViewStyle属性设置为vsButtonsOnly,Options-ShowEditButton设置为isebAlways。可以编写点击事件如下:
procedure TForm1.cxgrdbtblvwGrid1DBTableView1Column1PropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
ShowMessage(‘aaa‘);
end;
③ImageComboBox,可以关联一个imagelist,显示图片。如下关联imagelist后效果。
6.动态添加列和记录行
var
Column: TcxGridColumn;
i:integer;
acount:integer;
begin
Column:= cxgrd1TableView1.CreateColumn;
Column.Caption := ‘Test ‘;
cxgrd1TableView1.DataController.AppendRecord;
cxgrd1TableView1.DataController.Values[0, 0] := ‘ABC ‘;
cxgrd1TableView1.DataController.Post;
//添加多笔记录
for i:=1 to 4 do
begin
acount:=cxgrd1TableView1.DataController.RecordCount;
cxgrd1TableView1.DataController.AppendRecord;
cxgrd1TableView1.DataController.Values[acount, 0] :=IntToStr(i*1);
cxgrd1TableView1.DataController.Post();
end;
end;
//删除记录
cxgrd1TableView1.DataController.DeleteRecord(0);
end;
50 生存/恢复带汇总行的构造
<TableView>.StoreToIniFile(‘c:\Grid.ini‘, True, [gsoUseSummary]);
<GridView>.RestoreFromIniFile(<inifilename>,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要领,,或者:
<AView>.Controller.Controller.FocusedRow.IsFirst
<AView>.Controller.Controller.FocusedRow.IsLast
****************************************************************************
54 按照指定值查找记录
解决:
DataController供给了好几个要领来得到指定值对应的RecordIndex
对付Bound View可以使用FindRecordIndexByKeyValue要领
****************************************************************************
55 编纂和显示Blob字段
解决:
该字段的Properties设置为BlobEdit,并将BlobPaintStyle 属性设为 bpsText
****************************************************************************
56 得到可见行数
解决:
<View>.ViewInfo.VisibleRecordCount
****************************************************************************
57 生存后的行设置为当前行
解决:
[delphi]
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