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
;
|