使DBCtrlGrid(非DBGrid)支持鼠标滚轮!

Rijie 2003-06-18 08:43:59
使DBCtrlGrid(非DBGrid)支持鼠标滚轮!

我在FormMouseWheelDown与FormMouseWheelUp事件控制:

SendMessage(DBCtrlGrid1.Handle,WM_VSCROLL,SB_LINEUp,0);(上移)

SendMessage(DBCtrlGrid1.Handle,WM_VSCROLL,SB_LINEDOWN,0);(下移)

SendMessage(DBCtrlGrid1.Handle,WM_VSCROLL,SB_LINELeft,0);(左移)

SendMessage(DBCtrlGrid1.Handle,WM_VSCROLL,SB_LINERight,0);(右移)

上移下移可以,但太灵活,动一下就移动一页;

而左移右移根本就是上移下移;

这个问题困扰我好久了!

请帮忙解决!


请详细说明,最好有代码!

多谢!

只要解决,立即结帐!!!

...全文
229 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrtxc 2003-06-20
  • 打赏
  • 举报
回复
困了明天再来
Rijie 2003-06-20
  • 打赏
  • 举报
回复
TO:pazee(耙子)

DBCtrlGrid的行列数我是动态设定的(COlCount与RowCount)

它上面放的是数据感知组件:DBEdit,DBImage

我想实现:

垂直移动:移动一行的单元

水平移动:移动一列的单元
耙子 2003-06-20
  • 打赏
  • 举报
回复
你是想处理水平滚动轮?
目前大部分鼠标都是独轮的,为了这么个问题你费这么发的经历不知道值不值得。
我什么没有双轮的,没办法给你试
Rijie 2003-06-20
  • 打赏
  • 举报
回复
对,是这个思路!

可这个方法在设置水平方向时,滚动滑轮还是垂直滚动!

头大了~~~
耙子 2003-06-20
  • 打赏
  • 举报
回复
水平滚动我想你可以通过 一次移动一个记录来实现。
垂直滚动,你可以通过一次移动 n 个记录来实现 (n是列数)

不知道是不是这个思路?
sduzjw 2003-06-19
  • 打赏
  • 举报
回复
学习
linzhisong 2003-06-19
  • 打赏
  • 举报
回复
dataet.next替换


dataset.recno:=dataset.recno+6/;?
Rijie 2003-06-19
  • 打赏
  • 举报
回复
我希望移动一行,

如何实现?
Rijie 2003-06-19
  • 打赏
  • 举报
回复
TO: pazee(耙子)

比如DBCtrlGrid有5×6(5行6列)个单元

当鼠标滚轮稍微滚动一下(不是随便滚动)

如果移动一页,就相当于移动30条记录,

如果移动一行就是移动6条记录(上下滚动6条,左右滚动就是5条)
linzhisong 2003-06-19
  • 打赏
  • 举报
回复
头晕!

下班了!
耙子 2003-06-19
  • 打赏
  • 举报
回复
你给DBCtrlGrid也弄成了多列?
你放什么东西呀?

你想一次移动几个记录?
Rijie 2003-06-19
  • 打赏
  • 举报
回复
TO:pazee(耙子)

我说的是DBCtrlGrid不是DBGrid。

DBCtrlGrid每个单元可以放DBEdit,DBImage

显示不就是一条记录吗?

行列概念和DBGrid不同啊~
耙子 2003-06-19
  • 打赏
  • 举报
回复
搂主,

-----------------------------
比如DBCtrlGrid有5×6(5行6列)个单元

当鼠标滚轮稍微滚动一下(不是随便滚动)

如果移动一页,就相当于移动30条记录,
----------------------------------

这一页怎么会是5*6=30个记录,你的概念都错了。
5行就是5个记录。
列是列,列相当于我们说的字段,行相当于我们说的记录。

楼上各位给的都是按照行来移动的。
Rijie 2003-06-19
  • 打赏
  • 举报
回复
TO:linzhisong(無聊)

你果然厉害,这都行!!!

不过好像不是加6,加1即可

我不知道什么原因。

虽然有些别扭,但确实是个Good idea!!!
linzhisong 2003-06-18
  • 打赏
  • 举报
回复
SendMessage(DBCtrlGrid1.Handle,WM_VSCROLL,SB_LINEUp,0);(上移)

SendMessage(DBCtrlGrid1.Handle,WM_VSCROLL,SB_LINEDOWN,0);(下移)

上移下移用这个提换掉就可以一笔一笔移动
FormMouseWheelDown(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
//SendMessage(DBCtrlGrid1.Handle,WM_VSCROLL,SB_LINEDOWN,0);
DBCtrlGrid1.DataSource.DataSet.Next;
abort;
end;

FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
//SendMessage(DBCtrlGrid1.Handle,WM_VSCROLL,SB_LINEUp,0);(下移)
DBCtrlGrid1.DataSource.DataSet.Prior;
abort;
end;

SendMessage(DBCtrlGrid1.Handle,WM_VSCROLL,SB_HINELeft,0);(左移)

SendMessage(DBCtrlGrid1.Handle,WM_VSCROLL,SB_HINERight,0);(右移)
OO_is_just_P 2003-06-18
  • 打赏
  • 举报
回复
不知道,好像 ehlib 直接支持。试试
jun_01 2003-06-18
  • 打赏
  • 举报
回复
我不知道这样解决,:P
jpyc 2003-06-18
  • 打赏
  • 举报
回复
你的鼠标有问题吧,换个试试。
Rijie 2003-06-18
  • 打赏
  • 举报
回复
没人顶!

自己顶一下!
耙子 2003-06-18
  • 打赏
  • 举报
回复
你的一行和一页是什么概念?
加载更多回复(19)

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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