這是我要做的事在我的自定義組件(一個簡單的文本查看器):
procedure TCustomViewer.UpdateScrollInfo;
var
ScrollInfo: TScrollInfo;
begin
with ScrollInfo do
begin
cbSize := SizeOf(ScrollInfo);
fMask := SIF_POS or SIF_PAGE or SIF_RANGE or SIF_DISABLENOSCROLL;
nMin := 0;
nMax := 1023;
nPage := PageWidth;
nPos := FTopLeft.X;
end;
SetScrollInfo(Handle, SB_HORZ, ScrollInfo, True);
with ScrollInfo do
begin
nMax := FLines.Count - 1;
nPage := PageHeight;
nPos := FTopLeft.Y;
end;
SetScrollInfo(Handle, SB_VERT, ScrollInfo, True);
UpdateCaretPos;
Update;
end;
督察,您使用的是TScrollInfo
,你需要改變值填滿它,包括nMax
和nPage
,並用它調用SetScrollInfo
,指示要更改的滾動條。我敢肯定,大多數帶有滾動條的控件在內部控制它們,但如果控件沒有,你可以試試SetScrollInfo
。它可能適用於其中的一些。 TScrollInfo
和SetScrollInfo
在Windows.pas
中定義。這裏是the MSDN link。
請詳細說明。您的滾動條連接到什麼控件? –
Windows常用控件(備忘錄,RichEdit,Listbox等等)繪製自己的滾動條,所以說Delphi 2010與它有任何關係是不正確的。即使Delphi中的大多數自定義控件(如果不是全部)都將100%的滾動條繪畫委託給Windows本身。我沒有觀察到Delphi 2010中有一個固定的小滾動條大小的控件。 –
比例滾動條不如您想像的那麼常見(或簡單)。 Raymond Chen(MSFT)在這裏解釋,也許這將有助於:[滾動條,第4部分:添加比例滾動條](http://blogs.msdn.com/b/oldnewthing/archive/2003/07/31/54601。 aspx) –