MDI子ウィンドウを最大化しないようにするには?

解決


ahsan  2008-08-12 16:13:00  No: 31520  IP: 192.*.*.*

MDIで、子ウィンドウを複数作成し、
そのうちの1つの子ウィンドウを最大化し、
「X」(閉じる)をクリック(親の「X]ではない)すると、
その子ウィンドウが閉じ、別の子ウィンドウが
最大化された状態で表示されます。
その別のウィンドウも「X]で閉じると、
また別の子ウィンドウも最大化されています。
最初に最大化された子ウィンドウ以外は
最大化されない状態で表示できないのでしょうか?

編集 削除
それは  2008-08-12 16:49:31  No: 31521  IP: 192.*.*.*

この動作はウィンドウズの標準動作ですね。変えない方がいいのでは?

編集 削除
ttt  2008-08-12 18:23:46  No: 31522  IP: 192.*.*.*

正確には「どれか一つMDI子ウィンドウを最大化すると
すべての子ウィンドウが最大化される」ですね。
(Ctrl+F6で切り替えてみるとわかります)
逆に子ウィンドウを元のサイズに戻すか最小化すると、
すべての子ウィンドウが元のサイズに戻ります。

質問の要件を満たすだけなら、子ウィンドウが閉じられるときに
最大化されていたら元のサイズに戻してやればいいのでは。

編集 削除
ahsan  2008-08-12 19:08:02  No: 31523  IP: 192.*.*.*

それはさん、ありがとうございます。
Excelでも、最大化されたままですね。
tttさん、ありがとうございます。
以下のようにすると、うまく動作しました。
procedure TFormChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if IsZoomed(Self.Handle) = True then begin
    SendMessage(Self.Handle,WM_SYSCOMMAND,WPARAM(SC_RESTORE and $FFF0),0);
  end;
  Action:=caFree;
end;
どちらにするか、考えてみます。
解決ということで、
どうもありがとうございました。

編集 削除