gpt4 book ai didi

delphi - TListBox - 所选项目滚动速度

转载 作者:行者123 更新时间:2023-12-03 15:35:01 26 4
gpt4 key购买 nike

当选择一个项目(按住鼠标左键)并将鼠标移到列表框之外时,我需要更改列表框滚动的速度。要复制该行为,请执行以下操作:

  1. 将列表框拖放到表单上(+- 250 x 200 奇数)。不要让它太大,否则滚动条在底部将不可见。
  2. 将列数设置为 3。
  3. 将以下代码添加到 FormCreate 中:

    var
    I: Integer;
    begin
    for I := 0 to 200 do
    ListBox1.Items.Add('Item '+IntToStr(I));
    end;
  4. 运行应用程序并确保底部的滚动条可见。现在,在列表中的任意项目上单击并按住鼠标左键。移动鼠标,所选项目将根据鼠标光标所在的项目而变化。问题是,当鼠标移到列表框之外时,列表框会非常快速地滚动,在我的情况下,这是选择隐藏项目所必需的。我正在尝试减慢滚动速度。

我知道这不是列表框的正常用法,并且该行为可能不完全符合标准 UI 指南。它需要用于非常特定的目的,问题是滚动速度使用户感到非常尴尬。

我已经使用拖放和计时器将一些东西放在一起,但这并不理想,因为控件周围的“点击”区域有点小。如果有一种开箱即用的方法来做到这一点,那就太好了。

最佳答案

下面的内容至少很尴尬。但这是我唯一能想到的。使用插入器进行演示,但您可以以您喜欢的任何其他方式使用 ApplicationEvents 组件或子类。

type
TListBox = class(stdctrls.TListBox)
protected
procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
end;

procedure TListBox.WMMouseMove(var Message: TWMMouseMove);
begin
if GetCapture = Handle then
Sleep(250);
inherited;
end;

关于delphi - TListBox - 所选项目滚动速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22025708/

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