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

解決


ahsan  2008-08-13 01:13:00  No: 31520

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


それは  2008-08-13 01:49:31  No: 31521

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


ttt  2008-08-13 03:23:46  No: 31522

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

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


ahsan  2008-08-13 04:08:02  No: 31523

それはさん、ありがとうございます。
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;
どちらにするか、考えてみます。
解決ということで、
どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加