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