加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – TListBox – 选定项目滚动速度

发布时间:2020-12-15 09:12:33 所属栏目:大数据 来源:网络整理
导读:我需要更改选择项目时滚动列表框的速度(按住鼠标左键)并将鼠标移动到列表框之外.要复制该行为,请执行以下操作: 在表格上删除一个列表框( – 250 x 200 odd).不要太大,否则底部不会看到滚动条. 将列数设置为3. 将以下代码添加到FormCreate: var I: Integer;
我需要更改选择项目时滚动列表框的速度(按住鼠标左键)并将鼠标移动到列表框之外.要复制该行为,请执行以下操作:

>在表格上删除一个列表框( – 250 x 200 odd).不要太大,否则底部不会看到滚动条.
>将列数设置为3.
>将以下代码添加到FormCreate:

var
  I: Integer;
begin
  for I := 0 to 200 do
    ListBox1.Items.Add('Item '+IntToStr(I));
end;

>运行应用程序并确保底部的滚动条可见.现在,在列表中的任何项目上单击并按住鼠标左键.移动鼠标,所选项目将根据鼠标光标下的项目而改变.问题是当鼠标移动到列表框之外时,列表框将非常快速地滚动,这在我的情况下是必要的,以选择隐藏的项目.我试图减慢这个滚动速度.

我知道这不是列表框的正常用法,并且行为可能不完全符合标准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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读