2012-08-10 96 views
1

我创建了一个Delphi 7应用程序。其主要形式是以下特性的TForm的对象:滚动条的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的参数,如宽度,高度,保存和存储的地方在系统??? Windows操作系统强制应用程序采取该值?

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

回答

0

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

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

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

+0

['Constraints'](http://docwiki.embarcadero.com/Libraries/en/Vcl.Controls.TControl.Constraints)用于控件的边界限制器(您可以指定最小和最大宽度或高度)。 – TLama 2012-08-10 08:36:12

+0

是的,我测试过了。但是,让我困惑的事情。并非所有的XP和Windows 7都表现出相同的行为。该应用程序已在许多机器上使用和测试,到目前为止,我发现1 XP和1 Windows 7有这个问题。我急于找出原因。到目前为止,没有运气。我试图将Windows Theme更改为Classic,更改屏幕分辨率等。没有运气。我认为这可能来自以前的版本(有滚动条问题),但我不保存任何表单设置。 – ewlung 2012-08-10 12:22:40

+0

你有一台XP机器有这个问题? - 奇怪。 猜测:尝试比较Windows设置中的DPI值。 下一个(也是最后一个)猜测:有一个名为PrintScale的属性。尝试改变这一个。 – rollstuhlfahrer 2012-08-10 12:31:13