3

我正在使用带有THTMLPort的 Lazarus在我的程序中呈现一些 html 代码。HTMLViewerOnMouseEvent窗口不会在鼠标滚动时触发。我在一个名为THTMLViewer的 Delphi 类似但不相同的项目中发现了这样的问题。在该项目的此页面上,开发人员发布了 htmlviewer.pas 单元代码中的更改,以使OnMouseWheel事件能够触发。我试图对 THTMLPort 的相应 htmlviewer.pas 单元中的代码进行这些更改,但它不起作用。(作为旁注,我已经尝试在我的程序中简单地使用 THTMLViewer,但由于它仍在开发中以供在 Lazarus 中使用,所以它不会工作)。这是单元中唯一提到鼠标滚轮的代码,尤其是。事件OnMouseWheel

{$ifdef ver120_plus}
property OnMouseWheel;
{$endif}

...

{----------------ThtmlViewer.HTMLMouseWheel}
{$ifdef ver120_plus}
procedure ThtmlViewer.HTMLMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint);
var
  Lines: integer;
begin
Lines := Mouse.WheelScrollLines;
if Lines > 0 then
  if WheelDelta > 0 then
    VScrollBarPosition := VScrollBarPosition - (Lines * 16)
  else
    VScrollBarPosition := VScrollBarPosition + (Lines * 16)
else VScrollBarPosition := VScrollBarPosition - WheelDelta div 2;
end;

function ThtmlViewer.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
                                         MousePos: TPoint): Boolean;
begin
result:= inherited DoMouseWheel(shift, wheelDelta, mousePos);
if not result and not (htNoWheelMouse in htOptions) then
  begin
  HTMLMouseWheel(Self, Shift, WheelDelta, MousePos);
  Result := True;
  end;
end;
{$endif}

那么,任何人都可以帮助 THTMLPortOnMouseWheel事件正常工作吗?我对 Lazarus 有点陌生,所以我还不能完美地找到自己的出路。谢谢你的帮助。

4

0 回答 0