0

クライアント領域全体を使用する MDI 子ウィンドウを表示したいと思います。灰色の部分は作業ウィンドウの右側ではなく、子ウィンドウにタイトルバーと境界線を表示します。

http://img149.imageshack.us/img149/3204/delphimdichildwindowwit.jpg

計画どおりに動作しないコードは次のとおりです。

procedure TForm1.RzGroup1Items0Click(Sender: TObject);
var
  Form2 : TForm2;
begin
  Form2 := TForm2.Create(Application);

  //BAD : doesn't start at 0,0, and triggers horizontal scrollbar
  Form2.Align := alClient;

  //BAD : doesn't show titlebar and borders
  Form2.WindowState := wsMaximized;

  //BAD : window exceeds width -> horizontal scrollbar shown
  Form2.top     := 0;
  Form2.Left    := 0;
  Form2.Width   := Self.ClientWidth;
  Form2.Height  := Self.ClientHeight;
end;

自分で座標を計算する以外に、これを行う方法はありますか (例: ClientWidth など)?

ありがとうございました。

4

2 に答える 2

1

これを行う最も簡単な方法は、TILE コマンドです。

var
  wFrm : TChildMDI;
begin
  wFrm := TChildMDI.create(self);
  wFrm.Show;
  Tile;
end;

TILE は TForm のメソッドであり、MDI 子ウィンドウが 1 つしかない場合は、まさに望みどおりの結果が得られます。1 より大きい値を指定すると、表示されているすべての子ウィンドウが同様のレイアウトに収まるように配置されます。

ライアン。

于 2009-07-21T18:18:28.087 に答える