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 保存后的行设置为当前行 解决:
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
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;
TopRow := View. Controller . TopRowIndex;
FocusedRow := DataController. FocusedRowIndex;
DataController. DeleteFocused;
六六分期app的软件客服如何联系?不知道吗?加qq群【895510560】即可!标题:六六分期
阅读:17977| 2023-10-27
今天小编告诉大家如何处理win10系统火狐flash插件总是崩溃的问题,可能很多用户都不知
阅读:9570| 2022-11-06
今天小编告诉大家如何对win10系统删除桌面回收站图标进行设置,可能很多用户都不知道
阅读:8129| 2022-11-06
今天小编告诉大家如何对win10系统电脑设置节能降温的设置方法,想必大家都遇到过需要
阅读:8511| 2022-11-06
我们在使用xp系统的过程中,经常需要对xp系统无线网络安装向导设置进行设置,可能很多
阅读:8415| 2022-11-06
今天小编告诉大家如何处理win7系统玩cf老是与主机连接不稳定的问题,可能很多用户都不
阅读:9309| 2022-11-06
电脑对日常生活的重要性小编就不多说了,可是一旦碰到win7系统设置cf烟雾头的问题,很
阅读:8378| 2022-11-06
我们在日常使用电脑的时候,有的小伙伴们可能在打开应用的时候会遇见提示应用程序无法
阅读:7810| 2022-11-06
今天小编告诉大家如何对win7系统打开vcf文件进行设置,可能很多用户都不知道怎么对win
阅读:8364| 2022-11-06
今天小编告诉大家如何对win10系统s4开启USB调试模式进行设置,可能很多用户都不知道怎
阅读:7362| 2022-11-06
请发表评论