MDIを使用して、新規で子ウィンドウを表示できているのですが、
親ウィンドウ表示時に、はじめから子ウィンドウを最大化で開いておきたいのですが、下記のソースをどこのイベントに表示して良いか分かりません。
Child := Window.Create(Application);
Child.WindowState := wsMaximized;
Child.WebBrowser1.GoHome;
子ウィンドウが表示されるのですが、ノーマルウィンドウが表示された後に
最大化されます。はじめから、子ウィンドウの最大化表示はできないのですか?
新規で Form1 を fsMDIForm (MDI親フォーム)、Form2 を fsMDIChild
(MDI子フォーム)にし、Form2 を自動生成の対象からはずしておき
uses
Unit2;
procedure TForm1.FormShow(Sender: TObject);
begin
with TForm2.Create(Application) do Show;
OnShow := nil;
end;
として Form1 の OnShow イベントハンドラで Form2 を1つ作成し表示します。
一方、
procedure TForm2.FormShow(Sender: TObject);
begin
WindowState := wsMaximized;
WebBrowser1.GoHome;
OnShow := nil;
end;
とし、Form2 は自分が表示されるとき一度だけ最大化し、WebBrowser1 にホームを
表示します。D5 ではうまくいっています。
はじめの子ウィンドウは、きれいに開きました。
ですが、二つめ以降の子ウィンドウの表示がうまくいきません。
> Form2 を自動生成の対象からはずしておき
この設定が良く分かりません。
申し訳ありませんが、もう少しアドバイスをいただけますか。
設計時に、ChildFormのWindowStateをwsMaxmizedにしておけばよいのでは?
はじめからwsMaxmizedに設定しておいても、
ノーマル表示 → 最大化表示 になってしまいます。
デバックして確認したのですが、OnShow イベントハンドラで
WindowState := wsMaximized
と設定しても子ウィンドウの最大化になる動作が見えてしまいます。
MDIChildCountが0のときに子ウィンドウを開く場合は、最大化表示したいのですが、どう設定を変えてもウィンドウが最大化になる動作が見えてしまいます。
他の方法はないでしょうか。
お願いします。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=043597
こんなのがありますけど、私はできませんでした。
もし成功したらソース書いてくれると嬉しいです。
確かに1つ目はアニメーションしてしまいますね。
パネルで隠すのはどうでしょう。
必要に応じて、パネルの枠や色を変更してください。
設計時
1.パネル(name=Panel1)を親フォームに貼り付ける
2.Panel1のAlignをalClientに変更
3.Panel1のAlignをalNoneに変更(これで子フォームと同じ大きさのパネルができる)
4.Panel1のAnchorを全てtrueにする(これで親フォームの大きさを変えられても追従する)
子フォームを作成するイベントにて以下の定義。
var
isZero: Boolean;
begin
isZero := MDIChildCount = 0; // 子フォームの数が0ならtrue
if isZero then Panel1.Visible := True; // 子フォームの数が0だったらパネルを表示
with TForm2.Create(Application) do
begin
{ 子フォームに対していろいろ設定)
end;
if isZero then Panel1.Visible := False; // 子フォームの数が0だったらパネルを非表示
end;
とおりすがりんへ。
リンクの通りで動きましたよ。
# Delphi7Pro+WinXPSP2
もしかして、子フォームの作成でApplicationを指定していませんか?親フォームを指定すれば動くと思います。
をを!!本当だ。動きました。
Applicationじゃいけなかったんですか、、、
いや〜、作るの面倒だからって新規作成からMDIアプリ作ってたら、Application指定してるんですね。そんなこととは気づかずに、、、虚しさ爆発です。
にしのさん。どうもですぅ〜。
「とと丸」さん、「にしの」さん、助かりました。
ありがとうございます。
「とおりすがり」さんの情報も助かりました。
アニメーションが消せるとは思いもしませんでした。
ありがとうございます。
ツイート | ![]() |