很容易检测TScrollBox的垂直滚动条是否在最顶部:
TScrollBox
IsScrollBarAtTop := ScrollBox1.VertScrollBar.Position = 0;
但是,我如何检测TScrollBox的垂直滚动条是否在最底部?
pbossiut1#
您可以通过API检索滚动条信息并确定其是否位于底部。
function IsScrollBarAtBottom(Box: TScrollBox): Boolean; var Info: TScrollInfo; begin Info.cbSize := SizeOf(Info); Info.fMask := SIF_POS or SIF_RANGE or SIF_PAGE; Win32Check(GetScrollInfo(Box.Handle, SB_VERT, Info)); Result := Info.nPos >= Info.nMax - Info.nMin - Info.nPage; end;
8hhllhi22#
Vcl.Forms.TControlScrollBar.Range:Range表示关联控件的工作区的虚拟大小(以像素为单位)。例如,如果窗体水平滚动条的“范围”设置为500,窗体的宽度为200,则滚动条的“位置”可以在0到300之间变化。
IsScrollBarAtBottom := ScrollBox1.VertScrollBar.Position = (ScrollBox1.VertScrollBar.Range - ScrollBox1.ClientHeight);
如果范围小于滚动框的高度,则滚动条不可见。
pw136qt23#
重要的价值是内容的位置…我一直在寻找它一段时间,它没有在任何讨论中提到,所以我陈述它。( Delphi )
3条答案
按热度按时间pbossiut1#
您可以通过API检索滚动条信息并确定其是否位于底部。
8hhllhi22#
Vcl.Forms.TControlScrollBar.Range:
Range表示关联控件的工作区的虚拟大小(以像素为单位)。例如,如果窗体水平滚动条的“范围”设置为500,窗体的宽度为200,则滚动条的“位置”可以在0到300之间变化。
如果范围小于滚动框的高度,则滚动条不可见。
pw136qt23#
重要的价值是内容的位置…我一直在寻找它一段时间,它没有在任何讨论中提到,所以我陈述它。( Delphi )