DELPHI 解决DBGrid SHIFT键多选问题
2024-08-21 22:40:01
在实际项目中,偶然遇到需要按下SHIFT键,在DBGrid中进行多选的情况,测试了几种方法,最终确定了一个比较好的解决方法,总结如下:
procedure TTestFrame.TestDBGridMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin //实现 Shift+鼠标左键单击 多选
if Button = mbLeft then
begin
if not FblSelect then
begin
FBookMark := TDBGrid(Sender).DataSource.DataSet.GetBookMark;
FOldNo := TDBGrid(Sender).DataSource.DataSet.RecNo;
FblSelect := True;
Exit;
end
else
begin
if ssShift in Shift then
begin
FCurrNo := TDBGrid(Sender).DataSource.DataSet.RecNo;
TDBGrid(Sender).DataSource.DataSet.DisableControls;
TDBGrid(Sender).DataSource.DataSet.GotoBookmark(FBookMark);
TDBGrid(Sender).SelectedRows.CurrentRowSelected := True;
if FCurrNo > FOldNo then
begin
while FCurrNo > TDBGrid(Sender).DataSource.DataSet.RecNo do
begin
TDBGrid(Sender).SelectedRows.CurrentRowSelected := True;
TDBGrid(Sender).DataSource.DataSet.Next;
end;
end
else
begin
while FCurrNo < TDBGrid(Sender).DataSource.DataSet.RecNo do
begin
TDBGrid(Sender).SelectedRows.CurrentRowSelected := True;
TDBGrid(Sender).DataSource.DataSet.Prior;
end;
end;
TDBGrid(Sender).DataSource.DataSet.EnableControls;
TDBGrid(Sender).DataSource.DataSet.FreeBookmark(FBookMark);
FblSelect := False;
FCurrNo := ;
FOldNo := ;
TDBGrid(Sender).Invalidate;
end
else
begin
FBookMark := TDBGrid(Sender).DataSource.DataSet.GetBookMark;
FOldNo := TDBGrid(Sender).DataSource.DataSet.RecNo;
FblSelect := True;
Exit;
end;
end;
end;
end;
最新文章
- 奇异值分解(SVD)原理与在降维中的应用
- 单点登录SSO
- eclipse各版本代号
- js 定位到某个锚点
- tomcat 下虚拟机部署导致应用filter失效的问题
- go网络编程示例,客户端,服务器端
- Android导入项目时出现红色感叹号
- python计算md5值
- highcharts分段显示不同颜色
- Spring Boot学习总结四
- linuix没有网络
- Python魔法方法(magic method)细解几个常用魔法方法(上)
- CSS3之box-sizing属性
- Python基础05_str_补充
- WinForm版图像编辑小程序(实现图像拖动、缩放、旋转、抠图)
- Systemed systemctl 创建服务 详解
- 微软BI 之SSIS 系列 - Lookup 组件的使用与它的几种缓存模式 - Full Cache, Partial Cache, NO Cache
- cumtoj 一起来选课
- vue-loader v15、vue-loader v14及之前版本,配置css modules的区别
- 8个开发必备的PHP功能--转(柒捌玖零)
热门文章
- python链家网高并发异步爬虫asyncio+aiohttp+aiomysql异步存入数据
- curl NSS error -8179 (SEC_ERROR_UNKNOWN_ISSUER)
- odoo 学习
- CF293B Distinct Paths 搜索
- Luogu4338 ZJOI2018 历史 LCT、贪心
- Luogu P3327 [SDOI2015]约数个数和
- 【php增删改查实例】第十九节 - session的使用: 让服务器知道你是谁?
- java基础(个人学习笔记) A
- @Vue/Cli 3 关于 render 空的处理
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(七)一次线上Mysql数据库崩溃事故的记录