如何在Delphi XE8中处理TListBox滚动到最后一个TListBoxItem?

3

我正在尝试制作一个TListBox,最初加载15个TListBoxItems,并且每次您滚动到TListBoxItem的底部时添加另外15个TListBoxItems。在Delphi XE8的FireMonkey多设备项目中。

现在我无法弄清楚如何知道用户是否已经滚动到了TListBox的底部。我尝试了TListBox的所有事件,但似乎没有一个能够实现这一点。

2个回答

3

我认为您需要从稍微侧面的角度来考虑。与其考虑用户何时滚动到列表底部,不如考虑当列表中的最后一个项变为可见时,即当 ListBox.ListItems[ ListBox.ListItems.Count - 1].IsVisible 的 IsVisible 属性为 TRUE 时。

只有当用户滚动到列表底部时,这才会变为 TRUE!

您可以使用手势管理器或简单的计时器来测试状态。


1

如果平台是Windows,您可以尝试类似于以下的方法

var
  i: Integer;
  x:Double;
Begin
  x := ListBox1.Height / ListBox1.ItemHeight;
  i :=  GetScrollPos(ListBox1.Handle, SB_VERT);
  if i + x >= ListBox1.Items.Count then
    ShowMessage('It is at the end of scroll');
End;

不,正如我的解释所说,它是为Firemonkey多设备项目而设计的,适用于iOS和Android。 - Remi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接