CXGRid实现拖动鼠标多选

news/2025/1/25 3:19:56

要实现在CXGrid中拖动鼠标多选,您可以按住鼠标左键并拖动鼠标,直到选择了要选择的单元格或行。您可以在拖动过程中按住Shift键来限制选择范围。拖动选择的单元格或行时,您可以按住Ctrl键来添加或删除单元格或行的选择。当您完成选择时,松开鼠标左键即可完成多选。

如果您希望在拖动鼠标多选时显示选择矩形,则可以使用以下代码:

1. 在GridOptions中设置goDrawSelections为True:

  cxGrid1DBTableView1.OptionsSelection.GridOptions := [goDrawSelections];

2. 在OnMouseDown事件中设置开始选择的单元格或行:

  if AButton = mbLeft then
  begin
    StartCol := cxGrid1DBTableView1.GetColumnAtPos(X, Y);
    StartRow := cxGrid1DBTableView1.GetRowAt(X, Y);
  end;

3. 在OnMouseMove事件中实现选择矩形的绘制:

  if AButton = mbLeft then
  begin
    // 绘制选择矩形
    cxGrid1DBTableView1.Canvas.Pen.Color := clHighlight;
    cxGrid1DBTableView1.Canvas.Pen.Style := psDot;
    cxGrid1DBTableView1.Canvas.Brush.Style := bsClear;
    cxGrid1DBTableView1.Canvas.Rectangle(SelectionRect);

    // 更新选择矩形
    SelectionRect := Rect(StartCol.VisibleIndex, StartRow.VisibleIndex,
      cxGrid1DBTableView1.GetColumnAtPos(X, Y).VisibleIndex + 1,
      cxGrid1DBTableView1.GetRowAt(X, Y).VisibleIndex + 1);

    // 绘制新的选择矩形
    cxGrid1DBTableView1.Canvas.Pen.Color := clHighlight;
    cxGrid1DBTableView1.Canvas.Pen.Style := psDot;
    cxGrid1DBTableView1.Canvas.Brush.Style := bsClear;
    cxGrid1DBTableView1.Canvas.Rectangle(SelectionRect);
  end;

4. 在OnMouseUp事件中完成多选:

  if AButton = mbLeft then
  begin
    // 完成选择
    cxGrid1DBTableView1.Controller.SelectCells(StartCol, StartRow,
      cxGrid1DBTableView1.GetColumnAtPos(X, Y), cxGrid1DBTableView1.GetRowAt(X, Y));
  end;

以上代码仅供参考,您可以根据实际需求进行修改。


https://dhexx.cn/news/show-4628157.html

相关文章

GTK官方教程

前言: 让你在开发中爱不释手的 GT 包。关注GSLS官网,查看更多源码 ヾ(✿゚▽゚)ノ工具包。 所有文章 小编尽量让读者可以 直接 读懂 与 完全 复制粘贴,其中复杂或较多 的源码 会有 源码 并 贴上 github 网址。 GT 类 里面…

【JUC基础】14. ThreadLocal

目录 1、前言 2、什么是ThreadLocal 3、ThreadLocal作用 4、ThradLocal基本使用 4.1、创建和初始化 4.2、存储和获取线程变量 4.3、清理和释放线程变量 4.4、小结 4.5、示例代码 5、ThreadLocal原理 5.1、set() 5.2、get() 5.3、变量清理 5.4、ThreadLocalMap 6、…

springboot+vue+elementui计算机专业课程选课管理系统vue

本系统的主要任务就是负责对学生选课。主要用户为老师、学生,其中,学生可对自己的信息进行查询,可以进行选课,也可以进行删除已选课程,教师可对学生和课程的信息进行查询,教师拥有所有的权限,可以添加删除学生信息。系统提供界面,操作简单。 为实现这些功能,系统一个…

弄清楚Node.js的功能特性、运行时、组成和发展趋势分析以及与JavaScript的区别

目录 Node.js介绍 Node.js的作用和功能特性 Node.js应用场景 运行时是什么 Node.js的组成 1. V8引擎 2. 本地(核心)模块 3. 标准库 Node.js的发展趋势 总结 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,使JavaScript可以…

截取文本中间部分字符串算法思想

功能实现效果排除首位部分字符串 确定部分字符串的尾部,获取传入尾部字符串索引起始位置坐标 确定部分字符串的首部,获取传入首部字符串索引位置坐标与首部字符串长度之和 利用字符串截取函数获取即可 public String getSubString(String text, Strin…

图论试题2021

25 A:最大度是7,大于了顶点数6,故不是简单图的度序列。 C:树的度序列至少要有两个度为1的顶点 D:只要度数为奇数的个数有偶数个,就是度序列。 A:每棵树的中心由一个点或两个相邻点组成 B&…

Spring-Cloud-Gateway 整合 Sa-Token 全局过滤器之路由匹配

Spring-Cloud-Gateway 整合 Sa-Token 全局过滤器之路由匹配 Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。 Sa-Token 旨在以简单、优雅的方式完…

Vue+springboot舞蹈基础课程视频学习分享平台的实现和开发

基于java语言设计并实现了舞蹈基础数据平台。该系统基于B/S即所谓浏览器/服务器模式,应用Springboot框架,选择MySQL作为后台数据库。系统主要包括首页、个人中心、用户管理、舞蹈类型管理、舞蹈视频管理、用户留言、管理员管理、系统管理等功能模块。 重…

平面图学习

空调管道的设计:某景区有6个景点,位置分布如下图。 分析者认为:(1) A1与A4, (2) A2与A5, (3) A3与A6间人流较少,其它景点之间人流量大,必须投资铺设空调管道,但要求空调管道间不能交…

2.项目中的文件

项目的路径是这样的 目录 1 pages 1.1 json 1.2 wxml 1.3 wxss 1.4 js 2 utils 3 .eslintrc.js 4 app.js 5 app.json 6 app.wxss 7 project.config.json 8 project.private.config.json 9 sitemap.json 1 pages pages 用来存放所有小程序的页面&am…