Delphi Seattle 10 Android滚动问题

时间:2016-04-15 12:16:17

标签: android delphi

任何人都可以帮助我如何在Android应用程序中正确使用vertscrollbox。我把一个vertscrollbox放在一个tgroupbox和两个tlistbox中。你可以在截图中看到。当我想在我的应用程序中使用横向模式并点击并按住tgroupbox时,滚动工作很多。但是,如果我点击并按住其中一个tlistbox并尝试滚动滚动不起作用。

Here is a Youtube video about this issue

1 个答案:

答案 0 :(得分:0)

如果垂直滚动条的内容比任何方向的Self.ClientHeight更大(更高),它将仅滚动。最好的方法是在TVertScrollbox上放置一个TLayout。然后将其高度设置为高于Self.ClientHeight。然后它会显示滚动。

为了迎合方向,并使滚动恰到好处而不是太多,请使用FormResize事件处理程序:

procedure TfrmMain.FormResize(Sender: TObject);
begin
  VScrollBox1.Align := TAlignLayout.Client; 
  Layout4.Align := TAlignLayout.Horizontal; // stays centered left-right
  Layout4.Size.Height := 351 + 200; // space for VK here
  Layout4.Size.Width := 451; // doesn't matter actually

您将从我的评论中注意到,我的垂直滚动条为其下方的虚拟键盘提供了足够的空间(约200像素)。因此,当VK出现时,用户可以滚动垂直滚动框上的布局,因此第一个和最后一个TEdit控件可以在视图中,但不会太多,以至于顶部和底部的额外空间进入视图。当键盘显示时,Self.ClientHeight不会变小。注意:如果布局太高,可能会非常混乱。上面的351值是Layout4的最小大小,这样我的所有TEdits都可以立即显示。

因此,例如,如果该方向的Self.ClientHeight是< 551,当您滚动时,布局似乎滚动并且滚动条显示在右侧(如果VertScrollBox1.ShowScrollBars:= True)