Delphi 显示垂直滚动条的所有要求:为什么隐藏?
显示垂直滚动条的所有要求是什么?看起来很随意 我试过:Delphi 显示垂直滚动条的所有要求:为什么隐藏?,delphi,scrollbar,vcl,Delphi,Scrollbar,Vcl,显示垂直滚动条的所有要求是什么?看起来很随意 我试过: HorzScrollBar.Range := 10000; // set the range to an higher number VertScrollBar.Range := 10000; // set the range to an higher number ShowScrollBar(Handle, SB_BOTH, True); 与调整对象检查器中的范围以及自动滚动打开/关闭、客户端高度(表单)相结合。我想在过去的一个小时里我
HorzScrollBar.Range := 10000; // set the range to an higher number
VertScrollBar.Range := 10000; // set the range to an higher number
ShowScrollBar(Handle, SB_BOTH, True);
与调整对象检查器中的范围以及自动滚动打开/关闭、客户端高度(表单)相结合。我想在过去的一个小时里我有了所有可能的组合。看起来不管我做什么,滚动条都不会再回来了——当我随机重新调整一些设置(到相同的设置?)时,它第一次出现在这里
我试图实现的目标:当我按下按钮时,表单将显示,并应显示在屏幕右侧,如下所示:
Form1.Height := Screen.Height - 40;
Form1.Left := Screen.Width - 423;
Form1.Show;
procedure TfrmInstellingenMenu.Button1Click(Sender: TObject);
begin
VertScrollBar.Visible := true;
ShowMessage('Visible? ' + BoolToStr(VertScrollBar.IsScrollBarVisible));
//returns "Visible? -1". -1 is TRUE*, so yes (*tnx Ken)
ShowMessage('Autoscroll turned on? ' + BoolToStr(AutoScroll));
//returns "Autoscroll turned on? 0". 0 is False, so no
ShowMessage('Range=' + IntToStr(VertScrollBar.Range));
//returns "Range=8000".
end;
这个表单是一个选项菜单,所有的选项都完全适合我现在使用的屏幕。但是,我制作了一个面板,当单击某个选项时,面板将变得更长(更高),并向下推所有其他选项。所以当我需要滚动条时,设置开始从屏幕上消失
理想情况下,它只会在那些单击的选项出现时显示,而在不再需要时消失,但不知何故,它根本不会出现——不管我给出的表单是什么大小或范围
我忘记设置的其他选项/AutoScroll或VerticalScrollbar还有哪些依赖项,以便在需要时显示
有了ShowMessage功能,我有了更多的信息。我创建了一个按钮,执行以下操作:
Form1.Height := Screen.Height - 40;
Form1.Left := Screen.Width - 423;
Form1.Show;
procedure TfrmInstellingenMenu.Button1Click(Sender: TObject);
begin
VertScrollBar.Visible := true;
ShowMessage('Visible? ' + BoolToStr(VertScrollBar.IsScrollBarVisible));
//returns "Visible? -1". -1 is TRUE*, so yes (*tnx Ken)
ShowMessage('Autoscroll turned on? ' + BoolToStr(AutoScroll));
//returns "Autoscroll turned on? 0". 0 is False, so no
ShowMessage('Range=' + IntToStr(VertScrollBar.Range));
//returns "Range=8000".
end;
因此,尽管VertScrollbar已打开,但AutoScroll(因此)已自动关闭,加上范围已足够远,为什么它仍隐藏
编辑2:
更多详情:
这是一个VCL表单,borderstyle设置为BSSizeable。在表格中,基本上只有两个相同尺寸的面板。它们都具有受约束的大小,并且在开始时左右对齐。按钮将它们与顶部和底部对齐。当我设置按钮将它们都设置为与顶部对齐时,我设置的形状高度不再重要(可能是由于两个面板的约束)。但它对我的电脑屏幕来说太高了,表格的一部分从屏幕上消失了。当我将一个设置为顶部对齐,另一个设置为底部对齐时,整个表单都显示在屏幕上,但两个面板相互重叠。啊,当然还是没有滚动条。自动滚动打开 设置
Autoscroll=true
如果表单上组件的范围超过表单客户端大小,则会显示滚动条
- 边框样式可以是
(默认)或bsSizeToolWin
李>bsSizeToolWin
- 设置
VertScrollBar.Visible=false不会阻止可见性
Autoscroll=true
,将显示任何边框样式的滚动条,但仅在IDE中显示。这可能把你弄糊涂了
自动滚动关闭
设置VertScrollBar.Range
大于窗体的客户端高度时,无论BorderStyle
和Autoscroll
设置如何,都会显示滚动条。在这种情况下,可视性可以根据需要使用VertScrollBar.Visible
进行控制
您没有说明您想使用哪种边框样式,但如果是隐藏滚动条的一种样式,您还可以考虑将控件放在<代码>滚动框< /> > <代码> Algun= AlclieOs/Cuff> < /P>
在有问题的edit2之后编辑: <>你的“Eddi2”改变了上下文,但是我建议你考虑下面的测试,我用一个表单,两个面板和一个按钮。strong>要防止面板在此上下文中重叠(或留下间隙),应将两个面板设置为相同的
Align
。更改Align
(对于水平/垂直)后,只需将表单高度重置为其应有的高度。在下面的代码后面解释
在表单中添加了以下字段:
private
Horizontal: boolean;
Panel1
和Panel2
的约束设置为100150100150(顺序与OI相同)
两个面板的属性Align
设置为alTop
。窗体调整大小以包围两个面板
属性Form5.AutoScroll
设置为True
,Form5
的约束设置为180,180,0,0。注意滚动条是如何显示的,增加窗体的宽度以腾出空间
按钮放置在面板1上,单击OnClick
如下所示:
procedure TForm5.Button1Click(Sender: TObject);
begin
Horizontal := not Horizontal;
if Horizontal then
begin
Panel2.Align := alLeft;
Panel1.Align := alLeft;
end
else
begin
Panel1.Align := alTop;
Panel2.Align := alTop;
Constraints.MaxHeight := 180; // set size of form back to what it should be
end;
end;
重置形状高度的原因是,在计算范围时,不考虑形状约束。不知道是否按照设计,但无论如何,这就是为什么你的表单会漂浮在上面。因此,实际上不需要在设计时设置表单约束
自动滚动打开
设置Autoscroll=true
如果表单上组件的范围超过表单客户端大小,则会显示滚动条
- 边框样式可以是
bsSizeToolWin
(默认)或bsSizeToolWin
李>
- 设置
VertScrollBar.Visible=false不会阻止可见性
注意在IDE中更改边框样式,并设置Autoscroll=true
,将显示任何边框样式的滚动条,但仅在IDE中显示。这可能把你弄糊涂了
自动滚动关闭
设置VertScrollBar.Range
大于窗体的客户端高度时,无论BorderStyle
和Autoscroll
设置如何,都会显示滚动条。在这种情况下,可视性可以根据需要使用VertScrollBar.Visible
进行控制
您没有说明您想使用哪种边框样式,但如果是隐藏滚动条的一种样式,您还可以考虑将控件放在<代码>滚动框< /> > <代码> Algun= AlclieOs/Cuff> < /P>