怎样实现在DBGrid中双击选择整行,并且可以多选?谢谢!!
DBGrid1->Options里有个dgMultiSelect,把它设为true就能多选了
先设置DBGrid1->options中dgRowSelect = true, dgMultiSelect = true。
接着写按下面的写。
void __fastcall TForm1::DBGrid1DblClick(TObject *Sender)
{
keybd_event(VK_CONTROL,0,0,0); //模拟按下CTRL键
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DBGrid1MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(Button==mbRight) //右键取消多选;
{
keybd_event(VK_CONTROL,0,2,0); //模拟放开CTRL键
}
}
可以实现,不过尚不完美。
在cell点击时选择编辑,在dblclick时为整行选定。代码如下:
void __fastcall TForm1::DBGrid1DblClick(TObject *Sender)
{
TDBGridOptions options = DBGrid1->Options ;
DBGrid1->Options = options << dgRowSelect;
}
void __fastcall TForm1::DBGrid1CellClick(TColumn *Column)
{
TDBGridOptions options = DBGrid1->Options ;
DBGrid1->Options = options >> dgRowSelect;
DBGrid1->Options = options << dgEditing;
}
这样在每行双击时为整行选取,之后点击每行的非dgTitle部分均为每行选取,点击cell时为可编辑,单格选取。
procedure TForm1.FormDblClick(Sender: TObject);
begin
ShowMessage('双击');
end; procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
{
DBGrid1.DataSource.DataSet.DisableControls;
DBGrid1.DataSource.DataSet.First;
DBGrid1.SelectedRows.CurrentRowSelected := True;
DBGrid1.DataSource.DataSet.EnableControls;
}
keybd_event(VK_Control, MapVirtualKey(VK_Control, ), , );
keybd_event(VK_Control, MapVirtualKey(VK_Control, ), KEYEVENTF_KEYUP, ); //放开Ctrl键
//keybd_event(VK_CONTROL,0,0,0); //模拟按下CTRL键
// ShowMessage('双击');
//DBGrid1.DataSource.DataSet.GetBookmark()
//DBGrid1.Options dgmultiselect
end; procedure TForm1.Button1Click(Sender: TObject);
begin
with DBGrid1.DataSource.DataSet do
begin
DisableControls;
First;
while not Eof do
begin
DBGrid1.SelectedRows.CurrentRowSelected := True;
Next;
end;
EnableControls;
end;
end;
怎样实现在DBGrid中双击选择整行,并且可以多选?谢谢!!的更多相关文章
- 在DBGrid中,单击单元格选择整行,双击又可编辑单元格
在设计过程中,有时候数据较大量,field 较多的时候,只是点击单元格可能会对某个field的数据误操作(如数据错行),为此才会想到这个问题,解决办法如下:点击单元格就改当前行颜色. 首先DBGRID ...
- 在datagrid中实现单击行选择整行
首先添加列:<asp:ButtonColumn Text="选择" CommandName="Select" Visible="False&qu ...
- DevExpress GridControl 选择整行被选单元格不变色的设置
设置GridControl 里面的 gridview 属性, 找到OptionSelection 将EnableAppearanceFocusedCell 属性设置False 就可以了 此方式同样适用 ...
- asp.net中Repeart选中整行操作
<asp:Repeater runat="server" ID="rpt_Student"> <HeaderTemplate> < ...
- 在dbgrideh中允许选择多行,如何知道哪些行被选中
是个BOOKMARK类型的属性. SelectedRows: TBookmarkList procedure TForm1.Button1Click(Sender: TObject); var i, ...
- table中checkbox选择多行
页面代码 <table id="addressTable" class="ui-jqgrid-htable ui-common-table table table- ...
- hexo中加入点击出现小红心的特效会导致无法双击选中和连续点击三次选中一整行的操作
文章目录 问题描述 解决 个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io 问题描述 如题,我们 ...
- 基于Anaconda安装Tensorflow 并实现在Spyder中的应用
基于Anaconda安装Tensorflow 并实现在Spyder中的应用 Anaconda可隔离管理多个环境,互不影响.这里,在anaconda中安装最新的python3.6.5 版本. 一.安装 ...
- (很难啊)如何实时获取DBGrid 中当前单元格输入的内容? [问题点数:100分,结帖人yifawu100]
如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理,用什么事件呢? 所以Field的Onchange事件是没用的. DBGrid1.Selec ...
随机推荐
- OpenCV——Mat类的创建、复制、函数
Mat类的创建: 方法一: 通过读入一张图像,直接转换为Mat对象 Mat image = imread("test.jpg"); 其中 imread()方法需要传入String类 ...
- IN2REG group 的时序分析
针对 IN2REG 的 timing group,其 timing 模型是假设 input pin 外面有一个虚拟的reg(如图中的 reg1),这个虚拟reg的 clock 是 virtual cl ...
- ssh推送.py程序到服务器端运行
C:\Users\jiangshan>ssh jiangshan@192.168.1.191jiangshan@192.168.1.191's password:Last login: Sun ...
- 《Java程序设计》第2周学习总结(Markdown语法修改版)
20175105 2018-2019-2 <Java程序设计>第2周学习总结 Vim操作的一些总结 这些天通过学习,对于vim的操作有了很大的提升,下面我把vim的比较常见的操作方式做了归 ...
- Ubuntu 中使用git 上传代码
现在很多人都愿意把自己的代码分享给大家,所以有很多的代码管理的软件 ,比如SVN Git 等软件.今天就讲一下 git 的简单的应用,上传代码.用 git 上传代码 要有个git 账号,这是必不少的 ...
- sql 两表更新
UPDATE sale_origin_line set state='cancel' from sale_origin p,sale_origin_line q where p.id=q.or ...
- 使用MySQL命令行修改密码
格式:mysqladmin -u用户名 -p旧密码 password 新密码 1.给root加个密码ab12.首先在DOS下进入目录mysql\bin,然后键入以下命令 mysqladmin - ...
- 20155331 Exp3 免杀原理与实践
20155331 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 1.基于特征码的检测,2.启发式恶意软件检测,3.基于行为的恶意软件检测. 免杀是做什么? 让病毒不被杀毒软件杀 ...
- Qt 的线程与事件循环
Qt 的线程与事件循环
- 【SP1812】LCS2 - Longest Common Substring II
[SP1812]LCS2 - Longest Common Substring II 题面 洛谷 题解 你首先得会做这题. 然后就其实就很简单了, 你在每一个状态\(i\)打一个标记\(f[i]\)表 ...