我正在尝试制作一个TListBox,最初加载15个TListBoxItems,并且每次您滚动到TListBoxItem的底部时添加另外15个TListBoxItems。在Delphi XE8的FireMonkey多设备项目中。
现在我无法弄清楚如何知道用户是否已经滚动到了TListBox的底部。我尝试了TListBox的所有事件,但似乎没有一个能够实现这一点。
我正在尝试制作一个TListBox,最初加载15个TListBoxItems,并且每次您滚动到TListBoxItem的底部时添加另外15个TListBoxItems。在Delphi XE8的FireMonkey多设备项目中。
现在我无法弄清楚如何知道用户是否已经滚动到了TListBox的底部。我尝试了TListBox的所有事件,但似乎没有一个能够实现这一点。
我认为您需要从稍微侧面的角度来考虑。与其考虑用户何时滚动到列表底部,不如考虑当列表中的最后一个项变为可见时,即当 ListBox.ListItems[ ListBox.ListItems.Count - 1].IsVisible 的 IsVisible 属性为 TRUE 时。
只有当用户滚动到列表底部时,这才会变为 TRUE!
您可以使用手势管理器或简单的计时器来测试状态。
如果平台是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;