[英]How do I change the width of a ScrollBar?
我想更改 TFrame 的 ScrollingBar 寬度。
我知道我可以通過以下方式更改系統中的所有 ScrollingBars:
SystemParametersInfo(SPI_SETNONCLIENTMETRICS,....
但是我如何為特定的 WinControl 做到這一點?
Delphi 中的許多代碼取決於滾動條的寬度作為固定的系統設置,因此您無法在不破壞控件的情況下更改寬度。 (並非沒有在 VCL 中重寫 TControlScrollBar 和相關控件。)
當然,您可以隱藏控件的默認滾動條並在其旁邊添加您自己的 TScrollbar 組件。
這也顯示了兩種滾動條類型之間的最大區別:TScrollBar 有它自己的 Windows 句柄,而 TControlScrollBar 從相關控件借用它。
你可以嘗試這樣的事情:
your_frame.HorzScrollBar.Size := 50;
your_frame.HorzScrollBar.ButtonSize := your_frame.HorzScrollBar.Size;
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.