【发布时间】:2021-10-01 14:13:59
【问题描述】:
我有一个 ScrollBar,鼠标事件分配给 onChange、onMouseWheel 和 onMouseUp。 onChange 和 wheel 事件工作正常,但 onMouseUp 事件不会触发。在调试时深入到 TControl 方法,我注意到事件变量 (FOnMouseUp) 为零。该事件是在 IDE 中分配的,我将它放在表单的 onCreate 事件中,另外我尝试在创建表单后在其他各个地方分配它,但无济于事。什么给了?
这是一个简单的可重现示例,其中所有三个滚动条鼠标事件都不会触发:
`TForm4 = class(TForm)
ScrollBar1: TScrollBar;
Label1: TLabel;
procedure ScrollBar1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single);
procedure ScrollBar1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
procedure ScrollBar1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
procedure ScrollBar1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.fmx}
procedure TForm4.ScrollBar1Change(Sender: TObject);
begin
Label1.Text := 'onChange: ' + Screen.MousePos.Y.ToString;
end;
procedure TForm4.ScrollBar1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
begin
Label1.Text := 'mousedown: ' + Y.ToString;
end;
procedure TForm4.ScrollBar1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single);
begin
Label1.Text := 'mousemove: ' + Y.ToString;
end;
procedure TForm4.ScrollBar1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
begin
Label1.Text := 'mouseUP: ' + Y.ToString;
end;
end.`
还有.FMX:
`object Form4: TForm4
Left = 0
Top = 0
Caption = 'Form4'
ClientHeight = 480
ClientWidth = 640
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object ScrollBar1: TScrollBar
SmallChange = 0.000000000000000000
Orientation = Vertical
Position.X = 616.000000000000000000
Position.Y = 8.000000000000000000
Size.Width = 18.000000000000000000
Size.Height = 449.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
OnChange = ScrollBar1Change
OnMouseDown = ScrollBar1MouseDown
OnMouseMove = ScrollBar1MouseMove
OnMouseUp = ScrollBar1MouseUp
end
object Label1: TLabel
Position.X = 568.000000000000000000
Position.Y = 152.000000000000000000
Text = 'Label1'
TabOrder = 1
end
end`
【问题讨论】:
-
我们如何重现您的测试设置?详情请显示
.fmx内容。 -
您没有提供证明问题的minimal reproducible example。当我们看不到代码时,我们应该如何告诉您代码有什么问题?您需要提供一个minimal reproducible example,以便我们重现它。如果您花一些时间在tour 和阅读help center 页面以了解该网站的工作原理,然后再开始发布,您会发现您在这里的体验会好很多。
-
感谢你们俩 - 我是新来的,感谢您的帮助。
-
好的,我试过这个:一个垂直滚动条和一个标签的新项目。即使在这里,滚动条的鼠标事件也没有触发!
标签: delphi firemonkey mouseup onmouseup