如何调整滚动条的缩略图大小
-
05-07-2019 - |
题
如果打开记事本,添加十行并调整编辑器大小仅显示九,拇指轨道(滚动条上的可拖动块)几乎是垂直滚动条的全长。如果添加几千行,则拇指轨道只有几个像素高。
我想在TCustomControl后代复制这个bahaviour,在那里我实现了一个水平滚动条。所以我将WS_HSCROLL添加到我的窗口样式(在CreateParams中)并为WM_HSCROLL实现了一个处理程序。在此过程中,我使用SetScrollRange和SetScrollPos来管理拇指轨道的范围和位置 - 但是小虫子仍然是一个近乎完美的广场。
我错过了什么?
解决方案
文档建议使用 SetScrollInfo
而不是 SetScrollRange
和 SetScrollPos 代码>
Wouter的回答指出,您还需要设置页面大小。位置和范围告诉操作系统拇指中心所在的位置,但页面大小告诉它可以看到多少范围, 决定拇指大小的因素。您必须使用 SetScrollInfo
;作为奖励,它可以让您一次性设置位置,范围和页面大小。
TCustomControl
与 TWinControl
的区别在于:它有一个画布。 TScrollingWinControl
也只有一种方式不同:它有滚动条。将画布添加到 TScrollingWinControl
后代应该比向 TCustomControl
后代添加滚动条要容易得多#8212;从VCL源代码复制和粘贴的代码较少。更改控件的基类,然后查看您的位置。
即使这不是一个选项,你仍然可以看看 TScrollingWinControl
和 TControlScrollBar
如何协同工作。
其他提示
您可以使用 PageSize
属性来影响缩略图尺寸。
示例:
ScrollBar1.Min := 0;
ScrollBar1.Max := 100;
ScrollBar1.Position := 70;
ScrollBar1.PageSize := 50;
看起来像: