delphi - 如何在不捕获控件焦点的情况下滚动 Firemonkey TListBox?

标签 delphi firemonkey gesture delphi-10-seattle

我有一个TListBox,每个项目都有控件,例如TEditTComboBoxTSwitch等, 右对齐。此列表中有大约 20 项,因此它超出了屏幕,因此用户需要滚动(通过滑动手指)才能到达底部。

问题是,即使是快速手势,如果用户最初在其中一个控件上滑动手指,该控件会获得焦点并且列表不会滚动。目前,向上或向下滚动的唯一方法是在列表左侧滑动手指,那里没有任何控件。我可以禁用HitTestCanFocus,但是即使用户想要,该控件也永远不会获得焦点实际上点击它。

如何允许用户在这些控件上向上或向下滑动以滚动列表,而控件不会获得焦点?

最佳答案

我遇到了同样的问题。

为了使用 TListBox 解决这个问题,我使用了一个内部有布局的 TVertScrollBox。

每个控件都与顶部对齐,为了使其正常工作,我需要一个 VKVertScrollBox 来自: https://github.com/DelphiWorlds/KastriFree/tree/master/Demos/VKVertScrollbox

这样做,您将获得一个可滚动的组件列表,您可以在其中向下滑动手指并看到它在移动。

此外,为了避免在滑动时在每个组件上输入和获取焦点,您可以在每个组件上使用一个帮助器来通过覆盖 MouseDown、MouseMove 和 MouseUp 来捕捉移动,并防止在移动时输入覆盖 doEnter(也被覆盖)(被捕获)在 MouseMove 方法上)。

关于delphi - 如何在不捕获控件焦点的情况下滚动 Firemonkey TListBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46243737/

相关文章:

delphi - TChangeTabAction FMX XE7 - Embarcadero 的想法是什么?

xml - Delphi XML 绑定(bind)向导和可选元素

delphi - 如何在 Delphi 中使用或解决视觉表单继承问题?

ios - Delphi Firemonkey iOS 应用程序中是否提供多点触控手势编程?

android - 手势生成器

delphi - 为什么 Windows 7 上的 FindFirstFile/FindNextFile 没有列出系统目录的全部内容?

multithreading - 如何在多线程时安全地访问和修改数组?

ios - FireMonkey iOS RAD Studio XE2 - 在从 URL 加载的表单上显示图像

actionscript-3 - 触控应用程式的滑动行为

ios - 使用 hitTest() 或 point(inside, with event) 从添加到 keyWindow 的 View 转发事件