首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DBGrid上使用Shift + Click和Shift + KeyDown选择多行

在DBGrid上使用Shift + Click和Shift + KeyDown选择多行
EN

Stack Overflow用户
提问于 2015-10-21 10:25:18
回答 1查看 1.6K关注 0票数 0

我需要对现有的DBGrid组件进行代码更改,以便在Shift + Click和Shift + KeyDown上选择行。以下是我到目前为止为KeyDown所做的工作:

代码语言:javascript
复制
if (Key = VK_DOWN)  and (ssShift in Shift) then
begin
       if not myDataset.Eof then
       begin
         myDataset.Next;
       end;
end;

但是上面的代码并没有选择整行。它只会突出显示它下面的单元格。如何修改此代码以选择整行?我怎么也能为Shift+Click这么做呢?

EN

回答 1

Stack Overflow用户

发布于 2015-10-21 11:08:06

您需要在DBGrid中设置几个选项:

  • dgRowSelect =真
  • dgMultiSelect =真

dgRowSelect意味着选择整个行,而不是单个单元格。这样做的缺点可能并不重要,就是失去了在网格中进行就地编辑的能力。

完成这些更改后,您将发现不需要KeyDown处理程序中的代码。事实上,如果你把它放在里面,你会发现它跳过了每一行,所以你最终得到了斑马条纹网格。

“`dgMultiSelect”允许您将select从单个行扩展到多个行,方法是同时按住Shift键和Down或Up键。

但是,您现在说需要就地编辑,这与将dgRowSelect设置为True不兼容。问题在于,自定义绘制DBGrid单元格的范围是有限的,而不会有太多麻烦,ime。然而,以下可能是您的目的可以接受。

在网格中,确保DefaultDrawing设置为True,网格的Options设置如下:

代码语言:javascript
复制
Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit, dgMultiSelect]

您应该发现,当您单击一行时,整个行将被绘制为“突出显示”,而不仅仅是焦点单元格。但是,就地编辑器仍然可以在聚焦单元格上工作,并且仍然可以使用Shift + Up或Down将行选择扩展到多个行。

用Shift + Click来做某事是,嗯,更棘手。我假设您希望将所选内容从当前行扩展到所移动的行--单击?我认为你应该发布一个独立的Q关于这一点,因为这是不同的观点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33256865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档