如何更改ScrollBar的宽度?

问题描述:

我想更改TFrame的ScrollingBar宽度。
我知道我可以通过改变所有ScrollingBars系统:如何更改ScrollBar的宽度?

SystemParametersInfo(SPI_SETNONCLIENTMETRICS,.... 

但是我怎么做到这一点的具体WINCONTROL?

Delphi中的很多代码都依赖于滚动条的宽度,因此您不能在不打断控制的情况下改变宽度。 (不是没有重写VCL中的TControlScrollBar和相关控件。)

当然,您可以隐藏控件的默认滚动条并在其旁边添加您自己的TScrollbar组件。


标准的TScrollBar类是一个WinControl本身,其中滚动条取整个控件的宽度和高度。 TControlScrollBar类链接到其他WinControl以管理分配给Windowed控件的默认滚动条。尽管原始API可以使用更灵活的宽度,但您始终会遇到VCL将为这些控件假定系统默认宽度的问题。

这也显示了两个滚动条类型之间的最大区别:TScrollBar有它自己的Windows句柄,而TControlScrollBar从相关控件借用它。

你可以尝试这样的事情:

your_frame.HorzScrollBar.Size := 50; 
    your_frame.HorzScrollBar.ButtonSize := your_frame.HorzScrollBar.Size; 
+0

如果您使用平面滚动条,并有下面的Comctl32.dll版本6。这*威力*工作参见http://msdn.microsoft.com/en -us/library/bb775438(VS.85).aspx和http://msdn.microsoft.com/en-us/library/bb787529(VS.85).aspx – 2009-09-16 14:32:49