这是很容易检测TScrollBox
的垂直滚动条是否在顶部或不:如何检测滚动条是否在最底部?
IsScrollBarAtTop := ScrollBox1.VertScrollBar.Position = 0;
但我怎么能检测TScrollBox
的垂直滚动条是否是在很底部还是不?
这是很容易检测TScrollBox
的垂直滚动条是否在顶部或不:如何检测滚动条是否在最底部?
IsScrollBarAtTop := ScrollBox1.VertScrollBar.Position = 0;
但我怎么能检测TScrollBox
的垂直滚动条是否是在很底部还是不?
您可以通过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;
本书的标题也可以是:“Delphi的聪明WinAPI解决方案”。 – user1580348
@user德尔福在这里并不真正相关。这是一个Win32控件和一个Win32答案。代码可以用任何语言编写。 VCL是win32的一个松散的包装,这使得这种事情变得简单。很多Delphi程序员害怕其他语言,并且不会阅读用其他语言编写的代码。这是一个很大的弱点。不要害怕。学习足够的C++能够读取C++ Win32示例代码,并编写简单的C++程序,您将可以访问更有价值的信息。 –
Vcl.Forms.TControlScrollBar.Range来自:
范围表示相关联的控制的客户区的虚拟大小(以像素为单位)。例如,如果窗体的水平滚动条的范围被设定为500,和形式的宽度是200,滚动条的位置可以如果范围是从0变化到300。
IsScrollBarAtBottom := ScrollBox1.VertScrollBar.Position =
(ScrollBox1.VertScrollBar.Range - ScrollBox1.ClientHeight);
小于滚动框的高度,滚动条不可见。
想知道是否有人能证实这件作品。它在概念上与WinAPI解决方案相同。但更简单,没有挖下洋葱层。 –
@CraigYoung,是的它的工作原理,只是试了一下:-) –
很感谢,我知道你无法提前。 –
有点'开箱即用'的想法....由于滚动条是一个派生的抽象表示,你在哪里_whatever你滚动_也许更好的方法是查看底层视图的位置。例如。对于文本编辑器/查看器:你在文件的最后一行吗? –