delphi - 如何检测鼠标未移动且按钮仍被按下?

标签 delphi scrollbar onchange mousepress

在 Delphi 中,我在表单的右侧添加了一个滚动条组件(垂直方向)。

我添加了一个 Scrollbar OnChange 事件,因此当用户用鼠标单击 UpArrow 或 DownArrow 按钮时,我可以更改表单的 View 和滚动条拇指的位置,并且效果很好。

但是 OnChange 事件似乎仅在最初在箭头上按下鼠标按钮时才会触发。

我注意到所有滚动条控件都重复该命令并继续滚动,而鼠标仍然按下箭头,我想实现这种行为。

那么如何轻松检测用户是否没有移动鼠标并在鼠标停留在箭头上方时继续按下鼠标按钮?

结论。不知何故,我项目中滚动条中的某些内容已损坏。在我删除 ScrollBar 并再次添加后,问题就消失了。

这是我花了很多时间解决的棘手问题之一。谢谢你的帮助。我要结束这个问题。

最佳答案

使用 OnScroll 事件。

只要鼠标按住滚动条箭头按钮,以下代码就会将“xxx”添加到备忘录中。用德尔福 6 测试。

procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
  var ScrollPos: Integer);
begin
    Memo1.Lines.Add( 'xxx' );
end;

关于delphi - 如何检测鼠标未移动且按钮仍被按下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/692976/

相关文章:

vb6 - 如何在 Visual Basic 6 中使用滚动条?

css - div 宽度 100% opera 无滚动条

Android:带有持续可见滚动条的Fingerpaint

jquery - Onchange 输入事件不会在 jquery 上触发

javascript - 如何从其他代码触发表单元素的 onchange 的一部分?

android - 防止 FireMonkey 缩小照片

delphi - 线性变换函数

string - 在 Delphi 中将行添加到备忘录顶部

delphi - 确保嵌套子控件可见

python - 如果我在 api.onchange 方法中更改字段值,它不会在 View 中更新。为什么?