這是很容易檢測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你滾動_也許更好的方法是查看底層視圖的位置。例如。對於文本編輯器/查看器:你在文件的最後一行嗎? –