delphi - 如何禁用 TVertScrollBar 内的列表框滚动
问题描述
我有一个 TVertScrollBox,里面有一些组件。其中之一是 TListBox 女巫有一些 TListBoxItem。
该 TListBox 具有其所有项目的大小。所以它没有滚动条。
我需要 TListBox 上的滚动手势转到 TVertScrollBox。当我尝试在列表框中滚动时,它不会滚动自身也不会滚动其父级。
只能在手机上测试。在windows中我们无法模拟,一旦鼠标滚轮是不一样的触摸滚动事件。
我已经尝试将事件发送给它的父级,但到目前为止还没有成功。
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, FMX.ListBox,
FMX.Layouts;
type
TForm1 = class(TForm)
Button1: TButton;
VertScrollBox1: TVertScrollBox;
ListBox1: TListBox;
ListBoxItem1: TListBoxItem;
ListBoxItem2: TListBoxItem;
ListBoxItem3: TListBoxItem;
ListBoxItem4: TListBoxItem;
ListBoxItem5: TListBoxItem;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
end.
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 480
ClientWidth = 400
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object VertScrollBox1: TVertScrollBox
Position.X = 48.000000000000000000
Position.Y = 80.000000000000000000
Size.Width = 273.000000000000000000
Size.Height = 313.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
Viewport.Width = 257.000000000000000000
Viewport.Height = 313.000000000000000000
object Button1: TButton
Position.X = 104.000000000000000000
Position.Y = 352.000000000000000000
TabOrder = 1
Text = 'Button1'
end
object ListBox1: TListBox
Position.X = 24.000000000000000000
Position.Y = 24.000000000000000000
Size.Width = 200.000000000000000000
Size.Height = 241.000000000000000000
Size.PlatformDefault = False
TabOrder = 2
DisableFocusEffect = True
DefaultItemStyles.ItemStyle = ''
DefaultItemStyles.GroupHeaderStyle = ''
DefaultItemStyles.GroupFooterStyle = ''
Viewport.Width = 196.000000000000000000
Viewport.Height = 237.000000000000000000
object ListBoxItem1: TListBoxItem
TabOrder = 0
Text = 'ListBoxItem1'
end
object ListBoxItem2: TListBoxItem
Position.Y = 19.000000000000000000
TabOrder = 1
Text = 'ListBoxItem2'
end
object ListBoxItem3: TListBoxItem
Position.Y = 38.000000000000000000
TabOrder = 2
Text = 'ListBoxItem3'
end
object ListBoxItem4: TListBoxItem
Position.Y = 57.000000000000000000
TabOrder = 3
Text = 'ListBoxItem4'
end
object ListBoxItem5: TListBoxItem
Position.Y = 76.000000000000000000
TabOrder = 4
Text = 'ListBoxItem5'
end
end
end
end
解决方案
感谢 Tom Brunberg,我终于找到了解决方案。
我只需要从 interactiveGestures 禁用旋转值:
listBox.Touch.InteractiveGestures := [];
默认情况下,它设置为 true。
推荐阅读
- api - API 设计:如何开始设计基于 SOAP 的 Web 服务?
- docker - 无法运行依赖项目
- javascript - 如何在反应传单中打开弹出窗口?
- javascript - 选中时为文本加下划线
- c# - 如何确定 Firebird 数据库的字符集
- android - 如何销毁离子路由器插座中的所有组件
- c - 任何 C 的静态分析器会发现 sprintf 的潜在缓冲区溢出?
- vitess - vitess kubernetes ERROR 1105 (HY000): table xxx not found
- java - 完全按照写入的方式读取外部进程的交错 stdout 和 stderr
- code-snippets - 无法在 EmEditor 20.9 中复制片段