打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SCROLLBOX的MouseWheel
SCROLLBOX,在有些时候,你写了MOUSEWHEEL事件的代码,但缺看不到效果,关键在与在SCROLLBOX中都是IMAGE或LABEL控件。所以SCROLLBOX根本的不到焦点。
解决方案:
在SCROLLBOX中放入控件LISTBOX1,将LISTBOX1的长宽都设为0,
在SCROLLBOX的MOUSEMOVE事件中写入代码:
procedure TForm1.ScrollBox1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
//listbox随鼠标移动,不移动的话在SCROLLBOX在次得到焦点的时候滚动到LISTBOX位置
listbox1.Top:=y;
listbox1.Left:=x;
//Listbox1 得到焦点,其实是SCROLLBOX得到焦点
listbox1.SetFocus;
end;
然后在写控制鼠标滚轮的事件。

procedure TForm1.ScrollBox1MouseWheelUp(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
  var posi:integer;
  begin
   posi := ScrollBox1.vertScrollBar.Position - 25 ;
if ScrollBox1.vertScrollBar.Position < 0 then posi := 0;
ScrollBox1.vertScrollBar.Position := posi
end;

procedure TFrom1.ScrollBox1MouseWheelDown(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
   ScrollBox1.vertScrollBar.Position := ScrollBox1.vertScrollBar.Position + 25 ;
end;
这样就可以了,网上的很多方案都是截取系统的Message VM_WHEEL,其实SCROLLBOX本身就有,不需要来修改他,因为修该Message会对其他控件有影响,关键是在于他本身是否可以接受焦点。
上面代码D7没有问题。LISTBOX空间可以换成其他能接受焦点的控件来代替,但不要用EDIT控件,因为EDIT控件在接受焦点后有光标显示。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一个拼图工具的制作思路
DELPHI中鼠标的各种操作
在DBGrid中进展拖放操作
OrangeUI
delphi 获取剪贴板图像
delphi实现屏幕截图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服