这是我要做的事在我的自定义组件(一个简单的文本查看器):
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) –