首页 > 解决方案 > 如何禁用 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

标签: delphiscrolllistboxfiremonkey

解决方案


感谢 Tom Brunberg,我终于找到了解决方案。

我只需要从 interactiveGestures 禁用旋转值:

listBox.Touch.InteractiveGestures := [];

默认情况下,它设置为 true。


推荐阅读