2012-08-10 99 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