MDIで子ウィンドウ同士をドッキングするには


MINATO  2006-09-15 02:25:37  No: 23235

MDIの親フォーム1つ(MainForm)と子フォーム2つ(Form1,Form2)
を作成してMainFormからForm1を起動させるところまでできました。
このForm1にタブコントロールを置いてForm2をドッキングして
表示させようとしていますが、うまくいきません。
Delphi5の環境です。
TFormPanelのコンポーネントを使用すると似たようなことができる
のですが、できれば使わずにやりたいと思います。

Form2の作成は、タブを切り替えたときにやっているのですが、
タイミングに問題があるのでしょうか?
また、特定の子ウィンドウを削除する方法もわかりません。
何か良い方法は、無いでしょうか?

{===Form1のタブを切り替えたとき===}
procedure TForm1.TabCtrlChange(Sender: TObject);
var Child01: TForm2;
    i: Integer;
begin

   // ドッキング画面の表示切替
   with TabCtrl do begin
      if (TabIndex >= 0) and (TabIndex < Tabs.Count) then begin

         // *ここで表示中のドッキング画面の削除がいると思う。* //

         // ドッキング画面を設定する
         if      Tabs[TabIndex] = ' AAA ' then begin
            { MDI 子ウィンドウを作成する }
            Child01 := TForm2.Create(Application);
            Child01.Caption := Caption;
         end;
      end;
   end;
end;

{===Form2のCreate時===}
procedure TForm2.FormCreate(Sender: TObject);
begin
   //Form1にドッキング
   ManualDock( TForm1(MainForm.ActiveMDIChild), nil, AlClient );
end;


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

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






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