![](/img/trans.png)
[英]How to make TForm shows scrollbars when BorderStyle=bsNone?
[英]TForm issue with scrollbars
我创建了一个Delphi 7应用程序。 主要形式是具有以下属性的TForm对象:
BorderIcons:
- biSystemMenu = True
- biMinimize = True
- biMaximize = False
- biHelp = False
BorderStyle = bsSizeable
Position = poScreenCenter
Event OnCanResize: Resize := FALSE;
想法是,表单无法最大化,也无法调整大小,仅此而已。 它工作正常,但是当我在某些系统(Windows 7和Windows XP)上运行时,显示了滚动条。 同样,仅在某些系统中。
我认为这是因为显示器的屏幕分辨率太小,所以应用程序窗口被剪切了。 但是,事实并非如此。 该应用程序完美地显示在中央。
到目前为止,我尝试从互联网上应用许多技巧和窍门:
OnFormShow:
if VertScrollBarVisible(MainForm.Handle) then
begin
MainForm.Constraints.MaxHeight := MainForm.Constraints.MaxHeight + 10;
MainForm.Constraints.MinHeight := MainForm.Constraints.MinHeight + 10;
MainForm.Height := MainForm.Height + 10;
end;
if HorzScrollBarVisible(MainForm.Handle) then
begin
MainForm.Constraints.MaxWidth := MainForm.Constraints.MaxWidth + 10;
MainForm.Constraints.MinWidth := MainForm.Constraints.MinWidth + 10;
MainForm.Width := MainForm.Width + 10;
end;
它固定在某些系统上,但不是全部。
这让我感到困惑。
我还有另一个提示,设置TForm.Scaled:= FALSE和TForm.AutoScroll:= FALSE。 修复了这些系统后,表格的底部被切断了! ... 一点点。
所以,现在我问...
这些TForm参数(例如WIDTH,HEIGHT)是否保存并存储在系统中的某个位置??? Windows OS强制应用程序采用该价值吗?
因为过去,我的应用程序根本没有这个问题。 但是,然后,我更改了表单大小,添加了更多的GUI,然后问题就来了。 现在,我在想,原始的TForm属性存储在某个地方。
Windows> XP中的边框更大。 我不确定Constraints
作用,因为我没有使用它们。 您是否测试过在组件与表格的右/底端之间使用更大的距离?
编辑:某些组件在不同的操作系统上具有不同的默认大小。
编辑2:您的窗体不应调整大小,因此您可以使用BorderStyle:= bsSingle关闭大小调整。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.