如何调整滚动条的缩略图大小

时间:2009-09-11 00:29:28

标签: delphi scroll scrollbar tcustomcontrol

如果打开记事本,添加十行并调整编辑器大小仅显示九,拇指轨道(滚动条上的可拖动块)几乎是垂直滚动条的全长。如果添加几千行,则拇指轨道只有几个像素高。

我想在TCustomControl后代复制这个bahaviour,在那里我实现了一个水平滚动条。所以我将WS_HSCROLL添加到我的窗口样式(在CreateParams中)并为WM_HSCROLL实现了一个处理程序。在此过程中,我使用SetScrollRange和SetScrollPos来管理拇指轨道的范围和位置 - 但是小虫子仍然是一个近乎完美的广场。

我错过了什么?

2 个答案:

答案 0 :(得分:7)

您可以使用PageSize属性来影响拇指大小。

示例:

ScrollBar1.Min      := 0;
ScrollBar1.Max      := 100;
ScrollBar1.Position := 70;
ScrollBar1.PageSize := 50;

看起来像:

Page Size

答案 1 :(得分:4)

The documentation建议使用SetScrollInfo而不是SetScrollRangeSetScrollPos

Wouter's answer所述,您还需要设置页面大小。位置和范围告诉操作系统拇指中心所在的位置,但页面大小告诉它可以看到多少范围, 决定拇指大小的因素。你必须使用SetScrollInfo;作为奖励,它可以让您一次性设置位置,范围和页面大小。


TCustomControlTWinControl的区别仅在于一种方式:它有一个画布。 TScrollingWinControl只有一种方式不同:它有滚动条。将画布添加到TScrollingWinControl后代应该比向TCustomControl后代添加滚动条要容易得多 - 从VCL源代码复制和粘贴的代码更少。更改控件的基类,然后查看您的位置。

即使这不是一个选项,您仍然可以查看TScrollingWinControlTControlScrollBar如何协同工作。