ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


Tips >   

MDI で子ウィンドウを並べて表示 

更新 : 2014/09/15

 


解説:
データを比較したい、いくつかのウィンドウを同時に見たいなどで、フォームを複数表示したい場合があります。

C++Builder では、[新規作成]-[プロジェクト]-[MDIアプリケーション] で MDI (マルチ・ドキュメント・インタフェース = 親ウィンドウ内に複数の子ウィンドウを表示して管理)を簡単に自動作成できます。

今回は、ちまちまと手作業で作成してみます。

使用例:
アプリケーション起動後、[New] メニューからウィンドウを複数作ります。[Window] メニューでそれらを並べて表示したり、重ねて表示したりできます。

コンポーネントとしては MainMenu を配置するだけです。
コーディングがこのあとちょっと煩雑なので、頑張って記述してください。
流れはこうです。

1.普通に Project1.cpp 作成。
    FormStyle = fsMDIForm
2.Form2 追加。
    FormStyle = fsMDIChild
3."Unit1.cpp" に "Unit2.h" をインクルード。
4.Form2 の OnClose に Action = caFree; を記述。
5.Form2 を選択可能なフォームに設定。
6.Form1 に MainManu 配置。[File]-[New] メニュー作成。
7.[New] メニューの OnClick イベントに以下を記述。
    TForm2 *Form2;
    Form2 = new TForm2(Application);
8.Form1 で[Window]-[子ウィンドウを並べて表示] メニュー作成。
9.[子ウィンドウを並べて表示] メニューの OnClick イベントに以下を記述。
    Tile() ;
10.Form1 で[Window]-[子ウィンドウを重ねて表示] メニュー作成。
11.[子ウィンドウを重ねて表示] メニューの OnClick イベントに以下を記述。
    Cascade();

以上。
コンパイルして完成です。

時間のある方は、自動作成で MDI を作って、動かしてみてください。

//-------------------------------------------------------------------
void __fastcall TForm1::New1Click(TObject *Sender)
{
    TForm2 *Form2;
    Form2 = new TForm2(Application);
}
//-------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
    // MDI 子ウィンドウを並べて表示
    Tile() ;
}
//-------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
    // MDI 子ウィンドウを重ねて表示
    Cascade();
}
//-------------------------------------------------------------------



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.