Delphi DevExpress CxGrid 循环选择条目
整理出来的,直接复制粘贴即可使用
以下是从网络上复制粘帖到的,实践证明,利用以下代码进行获取选择行是错误的。
当我们利用 CxGrid进行排序后,它选的索引序号还是未排序前的,会导致选择错误、混乱的条目。
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序号
//获取单行选择的某列值,可写到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;