2

リボン バーとステータス バーのみを含む単純なフォームを使用すると、それが途切れることがわかりました。ステータス バーの上に表示されるコントロールは、後で削除されました。たまたまコントロールが存在していても、同じカットオフが発生します。後でステータスバーを削除し、代わりにメモコントロールを配置して同じ結果を得ました。

リボンバーなし: (ソース: xrw.bc.ca )リボンバーなし

リボンバー付き: (ソース: xrw.bc.ca )リボンバー付き

エッジから 2、4、および 8 ピクセルの描画でこれを説明しました。

最大化されていない
(ソース: xrw.bc.ca ) (ソース: xrw.bc.ca )
最大化された

Chris Lively が以下で述べているように、明らかにサイズの計算ミスがありました。どうすればこれを修正できますか?

コメントしてくださってありがとうございます!

4

2 に答える 2

2

以前の回答で問題を誤解しました。

この誤算の問題には、私が (すぐに) 思いついた回避策があります。

SC_MAXIMIZE wParam パラメーターを使用して、WM_SYSCOMMAND のカスタム メッセージ ハンドラーを使用できます。次に、次を使用してフォームのサイズを変更できます。

type
  TForm1 = class(TForm)
    // other stuff
    procedure WMSyscommand(var Msg: TWMSYSCOMMAND); message WM_SYSCOMMAND;



procedure TForm1.WMSysCommand(var Msg: TWMSYSCOMMAND);
var
  R: TRect;
begin
  // Test for SC_MAXIMIZE. If found...
  if Msg.CmdType = SC_MAXIMIZE then
  begin
    SystemParametersInfo(SPI_GETWORKAREA, 0, @R, 0);
    Top := R.Top;
    Left := R.Left;
    Width := R.Right - R.Left;
    Height := R.Bottom - R.Top;
    Msg.Result := 0; // Message handled
  end
  else
    DefaultHandler(Msg);
end;

上記のコード (Aero/Glass が有効な Vista 32 ビット Home Premium でテスト済み) は正常に動作します。

リボン左端のイメージ

リボン右端イメージ

ステータスバーのイメージ

于 2009-03-10T23:40:58.743 に答える