Seleção incorreta de itens em um FMX TListbox (Grid Metropolis UI)

Encontrei um problema de seleção inadequada de itens emTListBox na minha aplicação com umHorzScrollBox na forma. O formulário possui dois (ou mais)TListBox nele. Eles são afastados um do outro para que a diferença absoluta de coordenadas à esquerda seja maior que a largura da largura atual da tela do dispositivo. O erro aparece na seguinte sequência de ações do usuário.

Um item é selecionado da esquerdaTListBoxO HorzScrollBox é rolado para a direita e o segundoTListBox fica visível para o usuário e o esquerdo - invisível.O HorzScrollBox é rolado de volta para a esquerda.Um novo item é selecionado da esquerdaTListBox.

A imagem a seguir é exibida: O novo item é selecionado, mas a seleção permanece pintada sobre a posição do item selecionado anteriormente, mesmo se rolar a caixa para cima e para baixo.

É possível reproduzir o bug de uma maneira muito simples.

Crie um novo aplicativo Grid MetropolisUI.Substitua o padrão esquerdoTListBox com um novo (será mais rápido).Defina a largura do formulário maior que a largura da telaColoque o segundo novoTListBox dentro deHorzScrollBox de tal maneira que esquerda e direitaTListboxes não serão vistos simultaneamente e a seleção de itens só é possível após a rolagem doHorzScrollBox.Povoe-os de qualquer fonte (ex. DoisTPrototypeBindSource) e defina oListItemStyle propriedades de criadoLinkFieldControlToField paraMetropolisUI.

Feito. Quando você executa o aplicativo, você obtém o problema. O erro aparece apenas quando você rola aHorzScrollBox para que você não veja o segundoListBox quando você seleciona um item no primeiro. Caso contrário, os itens serão selecionados corretamente (mesmo se você rolar oHorzScrollBox) Aqui está o recurso do formulário (exceto o binário do estilo, ele precisa estar presente para reproduzir o bug).

object GridViewForm: TGridViewForm
  Left = 0
  Top = 0
  Caption = 'Grid Form'
  ClientHeight = 946
  ClientWidth = 2600
  StyleBook = StyleBook2
  FormFactor.Width = 1280
  FormFactor.Height = 1024
  FormFactor.Devices = [dkDesktop]
  FormFamily = 'Main'
  FullScreen = True
  OnMouseUp = FormMouseUp
  Touch.InteractiveGestures = [igPan]
  OnGesture = FormGesture
  DesignerMobile = False
  DesignerWidth = 0
  DesignerHeight = 0
  DesignerDeviceName = ''
  DesignerOrientation = 0
  DesignerOSVersion = ''
  object MainLayout: TLayout
    Align = alContents
    Height = 921.000000000000000000
    Margins.Top = 25.000000000000000000
    Width = 2600.000000000000000000
    object HorzScrollBox1: THorzScrollBox
      Align = alClient
      Height = 921.000000000000000000
      TabOrder = 0
      Width = 2600.000000000000000000
      object GroupLayout1: TLayout
        Align = alLeft
        Anchors = [akLeft, akTop]
        Height = 905.000000000000000000
        Margins.Left = 110.000000000000000000
        Position.X = 110.000000000000000000
        Width = 540.000000000000000000
        object ListBox4: TListBox
          Align = alClient
          Height = 905.000000000000000000
          StyleLookup = 'collectionlistbox'
          TabOrder = 0
          Width = 540.000000000000000000
          DefaultItemStyles.ItemStyle = ''
          DefaultItemStyles.GroupHeaderStyle = ''
          DefaultItemStyles.GroupFooterStyle = ''
        end
      end
      object GroupLayout2: TLayout
        Align = alLeft
        Anchors = [akLeft, akTop]
        Height = 905.000000000000000000
        Margins.Left = 40.000000000000000000
        Position.X = 690.000000000000000000
        Width = 1225.000000000000000000
      end
      object Layout1: TLayout
        Align = alLeft
        Anchors = [akLeft, akTop]
        Height = 905.000000000000000000
        Margins.Left = 40.000000000000000000
        Margins.Right = 100.000000000000000000
        Position.X = 1955.000000000000000000
        Width = 660.000000000000000000
        object Label1: TLabel
          Align = alTop
          AutoSize = True
          Height = 40.000000000000000000
          Margins.Left = 10.000000000000000000
          Margins.Bottom = 5.000000000000000000
          Position.X = 10.000000000000000000
          StyleLookup = 'pagesubheaderlabel'
          Text = 'Group Title: 4'
          Width = 165.000000000000000000
          WordWrap = False
        end
        object ListBox1: TListBox
          Align = alClient
          Height = 855.000000000000000000
          StyleLookup = 'collectionlistbox'
          TabOrder = 1
          Width = 660.000000000000000000
          DefaultItemStyles.ItemStyle = ''
          DefaultItemStyles.GroupHeaderStyle = ''
          DefaultItemStyles.GroupFooterStyle = ''
        end
      end
    end
  end
  object StyleBook2: TStyleBook
    Left = 632
    Top = 544
    ResourcesBin = {...}
  end
  object PrototypeBindSource1: TPrototypeBindSource
    AutoActivate = True
    AutoPost = False
    FieldDefs = <
      item
        Name = 'ContactBitmapL1'
        FieldType = ftBitmap
        Generator = 'ContactBitmapsL'
        ReadOnly = False
      end
      item
        Name = 'ContactName1'
        Generator = 'ContactNames'
        ReadOnly = False
      end
      item
        Name = 'IntField1'
        FieldType = ftInteger
        Generator = 'Integers'
        ReadOnly = False
      end>
    ScopeMappings = <>
    Left = 1288
    Top = 456
  end
  object BindingsList1: TBindingsList
    Methods = <>
    OutputConverters = <>
    Left = 20
    Top = 5
    object LinkFillControlToField1: TLinkFillControlToField
      Category = 'Quick Bindings'
      Control = ListBox4
      Track = True
      FillDataSource = PrototypeBindSource1
      FillDisplayFieldName = 'ContactName1'
      AutoFill = True
      BufferCount = -1
      AutoBufferCount = False
      ListItemStyle = 'MetropolisUI'
      FillExpressions = <
        item
          SourceMemberName = 'ContactBitmapL1'
          ControlMemberName = 'Icon'
        end
        item
          SourceMemberName = 'IntField1'
          ControlMemberName = 'SubTitle'
        end>
      FillHeaderExpressions = <>
      FillBreakGroups = <>
    end
    object LinkFillControlToField2: TLinkFillControlToField
      Category = 'Quick Bindings'
      Control = ListBox1
      Track = True
      FillDataSource = PrototypeBindSource2
      FillDisplayFieldName = 'ContactName1'
      AutoFill = True
      BufferCount = -1
      AutoBufferCount = False
      ListItemStyle = 'MetropolisUI'
      FillExpressions = <
        item
          SourceMemberName = 'FloatField1'
          ControlMemberName = 'SubTitle'
        end
        item
          SourceMemberName = 'ContactBitmap1'
          ControlMemberName = 'Icon'
        end>
      FillHeaderExpressions = <>
      FillBreakGroups = <>
    end
  end
  object PrototypeBindSource2: TPrototypeBindSource
    AutoActivate = True
    AutoPost = False
    FieldDefs = <
      item
        Name = 'ContactBitmap1'
        FieldType = ftBitmap
        Generator = 'ContactBitmaps'
        ReadOnly = False
      end
      item
        Name = 'ContactName1'
        Generator = 'ContactNames'
        ReadOnly = False
      end
      item
        Name = 'FloatField1'
        FieldType = ftSingle
        Generator = 'Floats'
        ReadOnly = False
      end>
    ScopeMappings = <>
    Left = 1232
    Top = 448
  end
end

Alguém tem alguma sugestão de como lidar com isso?

questionAnswers(1)

yourAnswerToTheQuestion