1

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

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

4

1 回答 1

0

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

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

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

于 2012-08-10T07:44:57.000 回答