我有一个TListBox,在每个项中都有控件,例如TEdit、TComboBox、TSwitch等,它们对齐了右边。这个列表中有大约20个项目,因此它扩展到屏幕之外,因此用户需要滚动(通过滑动手指)才能到达底部。
问题是,即使是在一个快速的手势,如果用户一开始在这些控件上滑动他们的手指,该控件的焦点和列表不滚动。目前,向上或向下滚动的唯一方法是滑动列表左侧的手指,在列表中没有任何控件。我可以禁用HitTest或CanFocus,但那样的话,即使用户真的想点击它,该控件也永远得不到焦点。
如何允许用户在这些控件上上下滑动以滚动列表,而不需要该控件的焦点?
发布于 2021-03-23 14:03:43
我也有过同样的问题。
为了使用TListBox来解决这个问题,我使用了一个带有内部布局的TVertScrollBox。
每个控件都与顶部对齐,为了使其工作,我需要一个来自:https://github.com/DelphiWorlds/KastriFree/tree/master/Demos/VKVertScrollbox的https://github.com/DelphiWorlds/KastriFree/tree/master/Demos/VKVertScrollbox
这样做,您将有一个可滚动的组件列表,在那里您可以滑动您的手指,并看到它的移动。
此外,为了避免在滑动时对每个组件输入和getFocus,您可以在每个组件上使用一个助手来通过覆盖MouseDown、MouseMove和MouseUp来捕捉移动,并防止在移动时进入重写doEnter (也是过大的)(捕捉MouseMove方法)。
https://stackoverflow.com/questions/46243737
复制相似问题