我不明白如何调整滚动条的范围。说我有
image1 : TImage;
组件中的TScrollingWinControl
。
现在开始我将range =设为组件的默认大小,如此。
width := Image1.width ;
height := Image1.Height;
HorzScrollBar.Range := Image1.Width;
VertScrollBar.Range := Image1.Height;
到此为止我相信我很好。一切看起来都不错,没有滚动条会像我想的那样出现。现在我只使图像更大,但组件保持相同的大小,就像这样。
Image1.height := Image1.Height +100;
Image1.Width := Image1.Width +200;
现在我可以告诉我的图像更大,组件大小相同但滚动条从不显示。所以对于他们来说,我需要设置范围,这让我感到困惑
所以这里是我困惑的地方,我采取image1.height - 组件高度并将其设置为范围?或整个Image1.height和滚动条的范围减去?
答案 0 :(得分:6)
当尺寸发生变化时,滚动框不会使其自身适应其内容。你必须这样做。毕竟,如果您希望滚动条仅将部分内容滚动到视图中,该怎么办?因此,您需要使Range
属性与滚动框中包含的控件的尺寸保持同步。
Range表示关联控件的客户区的虚拟大小(以像素为单位)。
因此,您只需将Range
属性设置为等于图像的大小即可。如果图像大小发生变化,则需要更新范围,如下所示:
HorzScrollBar.Range := Image1.Width;
VertScrollBar.Range := Image1.Height;
文档继续说:
例如,如果表单的水平滚动条的范围设置为500,并且表单的宽度为200,则滚动条的位置可以在0到300之间变化。
你似乎对此感到困惑。我想你想知道为什么位置在0到300之间变化。当位置为0时,可见区域为0到200.当位置为300时,可见区域为300到500.因此覆盖了整个范围。但滚动框控件负责管理滚动条。您只需将范围设置为图像的大小即可。