永发信息网

delphi中鼠标滚轮问题

答案:2  悬赏:70  手机版
解决时间 2021-04-04 12:08
  • 提问者网友:凉末
  • 2021-04-03 17:04
如果一个界面中有webbrowser,鼠标滚轮滚到最后就会转到别的控件上,怎么回事?

这样滚轮就失效了,不行啊.
最佳答案
  • 五星知识达人网友:鸽屿
  • 2021-04-03 17:35
直接屏蔽了鼠标滚轮操作……

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, GridsEh, DBGridEh, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
DBGridEh1: TDBGridEh;
DataSource1: TDataSource;
ADOTable1: TADOTable;
RichEdit1: TRichEdit;
procedure FormCreate(Sender: TObject);

private
Procedure OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);

public

end;

var
Form1: TForm1;

implementation

Procedure TForm1.OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
begin
if Msg.message = WM_MouseWheel then
begin
if Msg.wParam = 0 then
begin
if DBGridEh1.Focused then SendMessage(DBGridEh1.Handle,WM_VSCROLL,SB_NONE,0);
end;
Handled:= True;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage:=OnMouseWheel;
end;

end.
全部回答
  • 1楼网友:duile
  • 2021-04-03 17:53
我们使用的鼠标,很多都带有一个滚轮,方便用户的操作。但遗憾的是,平时编程多数只利用到鼠标的左、右两键,如果将滚轮操作功能也加进你的程序,定能使其增色不少。 当鼠标指针指向窗体中时,delphi为滚轮滚动提供onmousewheel事件,我们可以对它进行相应的处理。本例中,在窗体内放置一标签label1,用于显示滚轮滚动的效果。 implementation var i:integer; procedure tform1.formcreate(sender: tobject); begin i:=0; label1.caption:=inttostr(i); end; procedure tform1.formmousewheel(sender: tobject; shift: tshiftstate; wheeldelta: integer; mousepos: tpoint; var handled: boolean); begin if wheeldelta>0 then i:=i+1 else i:=i-1; //wheeldelta参数表示滚动一格的值,向上滚动为正数,向下滚动则为负数 label1.caption:=inttostr(i); end;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯