cxGrid 循环选择条目
Delphi DevExpress CxGrid 循环选择条目 整理出来的,直接复制粘贴即可使用
以下是从网络上复制粘帖到的,实践证明,利用以下代码进行获取选择行是错误的。
当我们利用 CxGrid进行排序后,它选的索引序号还是未排序前的,会导致选择错误、混乱的条目。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
var i,j: Integer ; begin with cxgridview . Controller do begin for i:= 0 to SelectedRowCount- 1 do begin j := cxgridview . DataController . GetSelectedRowIndex(I); //上文GetSelectedRowIndex不会随CxGrid排序而改变,导致造成严重后果 //ShowMessage(VarToStr(cxgridview.DataController.GetValue(j, 0))); //循环显示第0列 end ; end ; end ; end ; |
以下才是正确的:
CellClick事件中通过如下代码获取到真正的CxGrid序号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//获取单行选择的某列值,可写到CellClick事件中 with cxGrid1DBTableView1 . DataController . DataSet do begin //此处Current_Record获取到的字符串不会随CxGrid排序而改变 Current_Record := FieldByName( 'CodeData' ).AsString; end ; //获取多行选择的某列值,grdData为TableView的Name,RzMemo会显示出所有行的CodeData值 try with grdData . Controller do begin for i:= 0 to SelectedRowCount- 1 do begin grdData . Controller . FocusedRow := grdData . Controller . SelectedRows[i]; RzMemo . Lines . add(grdData . DataController . DataSet . FieldByName( 'CodeData' ).AsString); end ; end ; except end ; |