关于鼠标滚轮事件

iqyely 2011-02-24 04:54:31

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.baidu.com');
end;

procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint;
var Handled: Boolean);
begin
OutputDebugString('aaa');
if ssCtrl in Shift then
OutputDebugString('bbb');
end;

procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint;
var Handled: Boolean);
begin
OutputDebugString('ccc');
if ssCtrl in Shift then
OutputDebugString('ddd');
end;



如代码所示,网页加载完后,当滚动滑轮时输出了aaa,但在按住ctrl键却没有输出bbb,请看看这种情况应该怎么解决,谢谢。
...全文
266 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kye_jufei 2011-02-25
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw;

type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Align := alClient;
WebBrowser1.Navigate('www.baidu.com');
end;

procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
if GetAsyncKeyState(VK_CONTROL) <0 then
begin
OutputDebugString('bbb');
end;
end;

end.
无条件为你 2011-02-25
  • 打赏
  • 举报
回复

if ssCtrl in Shift then
替换为
if GetAsyncKeyState( VK_CONTROL) <0 then
即可。

不要改成=-32767,因为小于零就表示按下。等于0表示从没按过,或按过偶数次。等于1表示按过奇数次。
sharebei 2011-02-24
  • 打赏
  • 举报
回复

if ssCtrl in Shift then
替换为
if GetAsyncKeyState( VK_CONTROL )=-32767 then
iqyely 2011-02-24
  • 打赏
  • 举报
回复

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw;

type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Align := alClient;
WebBrowser1.Navigate('www.baidu.com');
end;

procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
if ssCtrl in Shift then
begin
OutputDebugString('bbb');
end;
end;

end.


把这个重新抽出来,非得是鼠标点击webbrowser以外的部分才能响应事件
fall513 2011-02-24
  • 打赏
  • 举报
回复
你猜 ctrl的消息跟鼠标滚轮的消息与上是什么
风之谷 2011-02-24
  • 打赏
  • 举报
回复
我这边正常
风之谷 2011-02-24
  • 打赏
  • 举报
回复
跟踪下看看 代码应该没问题
bdmh 2011-02-24
  • 打赏
  • 举报
回复
你看看按照ctrl建有没有进入到FormMouseWheelDown中呢

5,386

社区成员

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

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