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中双击选择整行,并且可以多选?谢谢!!的更多相关文章

  1. 在DBGrid中,单击单元格选择整行,双击又可编辑单元格

    在设计过程中,有时候数据较大量,field 较多的时候,只是点击单元格可能会对某个field的数据误操作(如数据错行),为此才会想到这个问题,解决办法如下:点击单元格就改当前行颜色. 首先DBGRID ...

  2. 在datagrid中实现单击行选择整行

    首先添加列:<asp:ButtonColumn Text="选择" CommandName="Select" Visible="False&qu ...

  3. DevExpress GridControl 选择整行被选单元格不变色的设置

    设置GridControl 里面的 gridview 属性, 找到OptionSelection 将EnableAppearanceFocusedCell 属性设置False 就可以了 此方式同样适用 ...

  4. asp.net中Repeart选中整行操作

    <asp:Repeater runat="server" ID="rpt_Student"> <HeaderTemplate> < ...

  5. 在dbgrideh中允许选择多行,如何知道哪些行被选中

    是个BOOKMARK类型的属性. SelectedRows: TBookmarkList procedure TForm1.Button1Click(Sender: TObject); var i, ...

  6. table中checkbox选择多行

    页面代码 <table id="addressTable" class="ui-jqgrid-htable ui-common-table table table- ...

  7. hexo中加入点击出现小红心的特效会导致无法双击选中和连续点击三次选中一整行的操作

    文章目录 问题描述 解决 个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io 问题描述 如题,我们 ...

  8. 基于Anaconda安装Tensorflow 并实现在Spyder中的应用

    基于Anaconda安装Tensorflow 并实现在Spyder中的应用 Anaconda可隔离管理多个环境,互不影响.这里,在anaconda中安装最新的python3.6.5 版本. 一.安装 ...

  9. (很难啊)如何实时获取DBGrid 中当前单元格输入的内容? [问题点数:100分,结帖人yifawu100]

    如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理,用什么事件呢? 所以Field的Onchange事件是没用的. DBGrid1.Selec ...

随机推荐

  1. leetcode242—Valid Anagram

    Given two strings s and t , write a function to determine if t is an anagram of s. Example 1: Input: ...

  2. JS日历控件优化(增加时分秒)

    JS日历控件优化      在今年7月份时候 写了一篇关于 "JS日历控件" 的文章 , 当时只支持 年月日 的日历控件,现在优化如下:      1. 在原基础上 支持 yyyy ...

  3. js 产生随机数

    这里整理了几个产生随机数的方法: 1.generateUUID() //获取一个唯一数 function generateUUID() { var d = new Date().getTime(); ...

  4. handsontable合并项mergeCells应用及扩展

    由于我这个项目主要是配置多表头信息,主要使用了handsontabel合并项功能. 但是,在该功能使用过程中发现了一些问题和一些自己根据需要做的一些扩展 $("#topFieldDiv&qu ...

  5. CODE[VS] 1159 最大全0子矩阵

    写一道CODEVS的题目 其实我还是很喜欢CODEVS的界面的 主要是系统地学习一下悬线法这个看似十分简单,实际就是十分简单的算法 对于一些详细的东西参考dalao's blog,不喜勿喷 对于悬线法 ...

  6. Android AccessibilityService(辅助服务) 使用示例

    1.前言 网上关于Android辅助服务的使用方式已经非常丰富了,所以也不在乎再多我这一篇了:-D.有同学说这是重复造轮子,题主很同意,但反过来说,如果自己没有能力造出轮子,还对重复造轮子嗤之以鼻,那 ...

  7. 蓝牙学习笔记二(Android连接问题)

    可以通过以下两点加速蓝牙连接: 1.更新连接参数 interval:连接间隔(connection intervals ),范围在 7.5 毫秒 到 4 秒. latency:连接延迟 ... 还有一 ...

  8. 杂谈---小故事小道理,面试中的小技巧(NO.2)

    本篇是接着上一篇面试随笔的,上一次有猿友反应写的有些“扯淡”,LZ思来想去最大的原因可能是由于上一章写的全是一些大忌,既然是大忌,那么在现实当中发生的概率还是相对较小的,大部分人还是很少在面试中犯如此 ...

  9. OPPO A7X 刷机小结

    OPPO A7X 刷机小结: 概述:根据网上找到的教程(MTK模式刷机教程),没有成功.在QQ上询问一位提供刷机服务的大神,说是只有老版本才能刷. 操作步骤: 刷机工具: MediaTek SP Fl ...

  10. 大厂面试官:Java工程师的“十项全能”

    想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,在面试之前到底需要准备哪些东西呢?面试时面试官想了解你的什么专业技能,以下都是一个合格Java软件工程师所要具备的. 一.专业技能 熟练的 ...