gpt4 book ai didi

delphi - 如何修复 ScrollBar 鼠标滚轮故障?

转载 作者:行者123 更新时间:2023-12-04 04:44:53 26 4
gpt4 key购买 nike

我有一个 TScrollBoxTFrame 中,当我使用鼠标滚轮时,它不会向上或向下滚动 ScrollBox。

我试过用

TScrollBox(Sender).Perform(WM_VSCROLL,1,0); 

FrameMouseWheelDown 上,但它不会触发。

有什么想法吗?

最佳答案

我的滚动框是这样的:

type
TMyScrollBox = class(TScrollBox)
protected
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override;
procedure WndProc(var Message: TMessage); override;
end;

function TMyScrollBox.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean;
begin
Result := inherited DoMouseWheel(Shift, WheelDelta, MousePos);
if not Result then begin
if Shift*[ssShift..ssCtrl]=[] then begin
VertScrollBar.Position := VertScrollBar.Position - WheelDelta;
Result := True;
end;
end;
end;

procedure TMyScrollBox.WndProc(var Message: TMessage);
begin
if Message.Msg=WM_MOUSEHWHEEL then begin
(* For some reason using a message handler for WM_MOUSEHWHEEL doesn't work. The messages
don't always arrive. It seems to occur when both scroll bars are active. Strangely,
if we handle the message here, then the messages all get through. Go figure! *)
if TWMMouseWheel(Message).Keys=0 then begin
HorzScrollBar.Position := HorzScrollBar.Position + TWMMouseWheel(Message).WheelDelta;
Message.Result := 0;
end else begin
Message.Result := 1;
end;
end else begin
inherited;
end;
end;

关于delphi - 如何修复 ScrollBar 鼠标滚轮故障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12955008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com