我想更改TFrame的ScrollingBar宽度 我知道我可以通过以下方式更改系统中的所有ScrollingBars:
SystemParametersInfo(SPI_SETNONCLIENTMETRICS,....
但我如何为特定的WinControl执行此操作?
答案 0 :(得分:1)
Delphi中的许多代码都依赖于滚动条的宽度作为固定系统设置,因此您不能在不破坏控件的情况下改变宽度。 (并非没有重写VCL中的TControlScrollBar和相关控件。)
当然,您可以隐藏控件的默认滚动条,并在其旁边添加自己的TScrollbar组件。
这也显示了两种滚动条类型之间的最大区别:TScrollBar拥有自己的Windows句柄,而TControlScrollBar则从相关控件中借用它。
答案 1 :(得分:1)
您可以尝试这样的事情:
your_frame.HorzScrollBar.Size := 50;
your_frame.HorzScrollBar.ButtonSize := your_frame.HorzScrollBar.Size;
答案 2 :(得分:-1)
procedure TForm1.FormCreate(Sender: TObject);
var NCMet: TNonClientMetrics;
begin
FillChar(NCMet, SizeOf(NCMet), 0);
NCMet.cbSize:=SizeOf(NCMet);
// get the current metrics
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, SizeOf(NCMet), @NCMet, 0);
// set the new metrics
NCMet.iScrollWidth:=50;
SystemParametersInfo(SPI_SETNONCLIENTMETRICS, SizeOf(NCMet), @NCMet, SPIF_SENDCHANGE);
end;