如何在DBGrid里实现Shift+“选择行”区间多选的功能!

xiaoshitou 2003-06-12 07:46:02
类似于Windows中使用Shift实现多选的功能!
...全文
143 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
JustJune 2003-09-13
  • 打赏
  • 举报
回复
我有个想法,可不可以让程序模拟系统处理CTRL+鼠标单击的事件来处理呀,但我还不是很清楚程序模拟系统事件是怎么具体实现的,我想这个一定可以的!请各位高手试试看!
zhp97 2003-06-27
  • 打赏
  • 举报
回复
用二公共变量记录开始选中记录与最终选中记录,然后在DrawCell事件中给两行之间的行加上点颜色,表示被选中。
鄙人从干过这样的事,做起来要控制的细微点
rola 2003-06-27
  • 打赏
  • 举报
回复
关注,我很想实现这个功能
xiaoshitou 2003-06-24
  • 打赏
  • 举报
回复
没有更好的办法了吗??
nnwq 2003-06-19
  • 打赏
  • 举报
回复
记好上一次选择的记录,当按Shift并点选择记录后,则将上一次先的记录号开始逐条加入书签。
xiaoshitou 2003-06-16
  • 打赏
  • 举报
回复
onclick事件中判断Shift是否按下,之后还要记录起始记录的位置和结束记录的位置,然后计算之间的所有记录,并使这些记录被选种,这似乎有些烦琐。我想知道是否有比这样用代码实现更简洁的方法,因为这个功能在平时是个挺常用的一个功能。
zjy6631 2003-06-13
  • 打赏
  • 举报
回复
同意things(平) (男儿在他乡,焉得不憔悴!) ,简洁!
xiaoshitou 2003-06-13
  • 打赏
  • 举报
回复
的确,我所要实现的功能即suton(suton) 所说的,因为压住ctrl选择一条一条的点太费劲了,有时可能遇到上白条记录需要选择。所以想找一个简单的可以多选的方法。
suton 2003-06-13
  • 打赏
  • 举报
回复
在onclick事件裡面判斷shift鍵是否被按下?
fandy 2003-06-13
  • 打赏
  • 举报
回复
关注,我也想实现这个功能
sduzjw 2003-06-12
  • 打赏
  • 举报
回复
判断一下SHIFT键按下没有,再选中出两次鼠标点击的记录不就行了吗
suton 2003-06-12
  • 打赏
  • 举报
回复
拜托啊,弄清楚問題先啊
things 2003-06-12
  • 打赏
  • 举报
回复
DBgrid-->Options-->dgMutiSelect=True
李_军 2003-06-12
  • 打赏
  • 举报
回复
dgMutiSelect隻能通過CTRL一次加多一條
suton 2003-06-12
  • 打赏
  • 举报
回复
倒~~~,這個網上經常看倒啊,但是樓主是要實現"多選的方式",即,先選定一條記錄做為開始的記錄,然後按住shift,再選擇另外一條,那麼,就需要兩次鼠標點擊的兩筆記錄之間的記錄全部被選定(包含這兩筆記錄)
lovelymelon 2003-06-12
  • 打赏
  • 举报
回复
luo521 2003-06-12
  • 打赏
  • 举报
回复
DELPHI 的TDBGrid 控 件 主 要 用 来 处 理 数 据 表, 它 的 属 性 中 有
一 个dgMultiSelect, 若 此 属 性 设 定 为TRUE, 则 可 以 选 中 多 个 记 录
( 可 用CTRL + 鼠 标 左 键 选 择 多 个 记 录)。 对 选 中 的 多 个 记 录
可 以 有 以 下 几 种 处 理 方 式, 比 较 简 单 的 两 种 是: 清 除 所 有
的 选 择 记 录 可 用DBGrid1.SelectedRows.Clear 语 句; 删 除 所 有 的 选
择 记 录 可 用DBGrid1.SelectedRows.Delete 语 句。 但 如 果 想 获 得 选 中
的 所 有 记 录 的 其 他 信 息, 比 如, 在 单 独 的 一 个 窗 体 中 显 示
用 户 选 择 的 记 录 的 第 一 个 字 段 的 内 容( 如 所 有 选 择 的 姓 名)
如 何 处 理 呢 ? 这 就 要 使 用 书 签 功 能 了, 下 面 是 笔 者 编 写 的
一 个 程 序 中 的 过 程, 用 来 将 用 户 选 择 的 多 个 记 录 集 中 显 示
在 另 外 一 个 窗 体 中( 笔 者 使 用 的 是DELPHI4), 供 参 考 使 用。


procedure GetSelectedRecord
(DataSet : TDataSet; FieldName : String;
BookmarkList : TBookmarkList; Strings : TStrings);
file://这个过程中的参数分别为:数据表、字段名称、
书签、用来保存所选字段内容的
file://字符串(用于将内容传递到另
一个单独窗体中的TLIST控件中)
var
I: Integer;
bm : TBookMark;
begin
Strings.Clear;
with Dataset do begin
DisableControls;
bm := GetBookMark;
try
file://每个选择的记录都有一个书签标志,
这就为处理它们提供了条件
for I := 0 to BookmarkList.Count - 1 do begin
Bookmark := BookmarkList[I];
Strings.Add(DataSet.FindField(fieldname).AsString);
end;
finally
GotoBookMark(bm);
FreeBookMark(bm);
EnableControls;
end;
end;
end;

调用举例:
GetSelectedRecord(Table1, 'NAME', DBGrid1.SelectedRows,
Form2.ListBox1.Items
suton 2003-06-12
  • 打赏
  • 举报
回复
沒有,裡面隻有dgMutiSelect是實現多選的,不過隻能通過CTRL一次加多一條.
sixgj 2003-06-12
  • 打赏
  • 举报
回复
在option属性里看看,关于它多选的属性都在那里了。

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧