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;

cxGrid 循环选择条目的更多相关文章

  1. C语言第五讲,语句 顺序循环选择.

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  2. shell脚本-循环选择语句

    shell脚本-循环选择语句 过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$". if语句 根据命令的退出状态来执行命令 单 ...

  3. Python学习笔记(Ⅱ)——循环/选择/函数

    一.循环结构 python中提供了for循环和while循环两种操作,没有do……while语句. 1.for循环: 与其他语言中for循环的常见的写法如for (int i=0;i<10;i+ ...

  4. linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载

    http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html nux shell有一套自己的流程控制语句,其中包括条件语句(if),循环 ...

  5. [Python笔记][第三章Python选择与循环]

    1月28日学习 Python选择与循环 选择结构 多分枝选择结构 if 表达式 1: 语句块 1 elif 表达式 2: 语句块 2 elif 表达式 3: 语句块 3 ... else : 语句块 ...

  6. [转]linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例

    原文链接:http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html linux shell有一套自己的流程控制语句,其中包括条件语句 ...

  7. Android自己定义实现循环滚轮控件WheelView

    首先呈上效果图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...

  8. Python排序算法——选择排序

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10787340.html 一.选择排序(Sele ...

  9. Java和Python分别实现直接选择排序

    1.基本思想 将指定排序位置与其他数组元素分别对比,如果满足条件就进行交换.个人理解其实就是每趟循环从数组里选一个最大的值(最小的值)放到数组最后(最前). 2.算法实现 这里以每趟循环从数组中选择一 ...

随机推荐

  1. JMeter高速应用

    过去长期用loadrunner做性能測试.可是渐渐认为有些麻烦了: 1.仅仅能执行在windows环境下,而生产环境差点儿清一色的linux.为了在同一网段做性能或压力測试,还须要单独部署一套wind ...

  2. 转:SiteMesh简介

    OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容易实现页面中动态内容和静态装饰 ...

  3. Hive查询表,返回数据全是NULL

    情况1: hive> create table users(id int, name string); hive> load data local inpath '/usr/local/u ...

  4. python学习之io模块

    class io.BytesIO([initial_bytes]) 他是一个_io.BytesIO对象. 用这个类的实例可以操作内存缓冲区中的字节流. >>> s = 'hello' ...

  5. PHP进制转换[实现2、8、16、36、64进制至10进制相互转换]

    自己写了一个PHP进制转换程序,一个类吧,第一次写这个东东,写这个东东,在处理文本文件时能用得到.   可以实现: 10进制转换2.8.16.36.62进制2.8.16.36.62进制转换10进制 有 ...

  6. 利用RPM和YUM安装软件

    安装软件事root的事,所以必须要以root身份登录! 假设我要安装一个文件名为rp-pppoe-3.5-32.1.i386.rpm的文件, 那么我们可以这样: rpm安装软件 rpm -ivh pa ...

  7. 在32位Centos6.4上安装GraphicsMagick

    安装时,make总是有如下错误,最后几行 /bin/sh ./libtool --tag=CC --mode=link gcc -std=gnu99 -g -O2 -Wall -pthread -ld ...

  8. git 工作模式

    个人在学习Git工作流的过程中,从原有的 SVN 模式很难完全理解Git的协作模式,直到有一天我看到了下面的文章,好多遗留在心中的困惑迎刃而解: 我们以使用SVN的工作流来使用Git有什么不妥? Gi ...

  9. volatile关键字是什么意思

    我写了一段简单的对比代码并分别用vs2017以release方式编译然后用IDA观察汇编代码,如下图所示: 代码1 int a=5; printf("%d",a) 代码2 vola ...

  10. js 数组取出最大值最小值和平均值的方法

    1.直接遍历数组 ,,,,,,,]; ]; ;i<arr.length;i++){ if(max<arr[i]) max=arr[i]; } 2.借用Math的方法 ,,,,,,,]; v ...