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 を設定する別のヒントを得ました。これらのシステムは修正されましたが、フォームの下部が切り取られていました! ... 若干。

だから、今私は尋ねています...

WIDTH、HEIGHT などのこれらの TForm パラメータは、システムのどこかに保存されて保存されますか? そして、Windows OS はアプリにその値を取るように強制しますか?

過去に、私のアプリにはこの問題がまったくなかったからです。しかし、その後、フォームのサイズを変更し、GUI を追加すると、問題が発生しました。今、私が考えているのは、元の TForm プロパティがどこかに保存されているということです。

4

1 に答える 1

0

Windows>XPの境界線は大きくなっています。私はConstraintsそれらを使用していないので、何をするのかわかりません。コンポーネントとフォームの右/下端の間の距離を大きくすることをテストしましたか?

編集:一部のコンポーネントは、OSごとにデフォルトサイズが異なります。

編集2:フォームのサイズを変更しないでください。BorderStyle:=bsSingleを使用してサイズをオフにできます。

于 2012-08-10T07:44:57.000 に答える