滚动条的TForm问题

时间:2012-08-10 07:37:08

标签: delphi delphi-7

我创建了一个Delphi 7应用程序。主窗体是具有以下属性的TForm对象:

BorderIcons:
- biSystemMenu = True
- biMinimize = True
- biMaximize = False
- biHelp = False

BorderStyle = bsSizeable

Position = poScreenCenter

Event OnCanResize: Resize := FALSE;

这个想法是形式无法最大化,无法调整大小,这就是全部。 它工作正常,但是当我在某些系统(Windows 7和Windows XP)上运行时,会显示滚动条。同样,仅在某些系统中。

我认为这是因为显示器的屏幕分辨率太小,因此app窗口被剪裁了。但事实并非如此。该应用程序在中心完美显示。

到目前为止,我试图从互联网上应用许多技巧和提示:

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操作系统会强制应用程序获取该值吗?

因为在过去,我的应用根本没有这个问题。但后来,我改变了表单大小,增加了一些gui,然后问题来了。现在,我在想,原始的TForm属性存储在某个地方。

1 个答案:

答案 0 :(得分:0)

Windows中的边框> XP更大。我不确定Constraints做了什么,因为我没有使用它们。您是否测试过在组件和表单的右/底端之间使用更大的距离?

编辑:某些组件在不同的操作系统上具有不同的默认大小。

编辑2:您的表单不应调整大小,因此您可以使用BorderStyle关闭大小调整:= bsSingle。