ウィザードを使用せずに VCL フォーム MDI アプリケーションを構築する

提供: RAD Studio
移動先: 案内検索

VCL フォーム アプリケーションの作成方法 への移動


子ウィンドウを持つ MDI アプリケーションを、ウィザードを使用しないで新規作成する基本手順

  1. メイン ウィンドウ フォーム(MDI 親ウィンドウ)を作成します。
  2. 子ウィンドウ フォームを作成します。
  3. ユーザーの制御の下で、メイン ウィンドウに子ウィンドウを作成させます。
  4. 子ウィンドウを閉じるためのイベント ハンドラ コードを記述します。
  5. メイン メニューとコマンドを作成します。
  6. コマンドのイベント ハンドラを追加します。
  7. アプリケーションをコンパイルして実行します。

メイン ウィンドウ フォームを作成する

  1. [ファイル|新規作成|その他...]の[Delphi プロジェクト]または[C++Builder プロジェクト]を選択し、[VCL フォーム アプリケーション]アイコンをダブルクリックします。VCL フォーム デザイナが表示されます。
  2. [オブジェクト インスペクタ]で、FormStyle プロパティを fsMDIForm に設定します。
  3. frMain」などのわかりやすい名前を Name プロパティに入力します。
  4. uMain.pas(Delphi)や uMain.cpp(C++)など、わかりやすい名前でユニット ファイルを保存します。

子ウィンドウを作成する

  1. [ファイル|新規作成|VCL フォーム] を選択します。
  2. [オブジェクト インスペクタ]で、FormStyle プロパティを fsMDIChild に設定します。
  3. 「frChild」などのわかりやすい名前を Name プロパティに入力します。
  4. uChild.pas(Delphi)や uChild.cpp(C++)などの名前でユニット ファイルを保存します。

メイン ウィンドウに子ウィンドウを作成させる

  1. [プロジェクト|オプション...] を選択します。[<プロジェクト名> のプロジェクト オプション]ダイアログ ボックスが開くので、[フォーム]ページを選択します。
  2. [自動生成フォーム]のリストで frChild を選択し、[>]をクリックして[使用可能フォーム]のリストに移動し、[OK]をクリックします。
  3. frMain フォームを選択してアクティブにし、[コード]ビューに切り替えます。
  4. Delphi の場合は、スクロールして uses セクションに移動し、リストに uChild を追加します。C++ の場合は、uMain.h#include "Child.h" を追加します。
  5. Delphi の場合は、スクロールして private 宣言セクションに移動し、次の手続き宣言を入力します。
procedure CreateChildForm(const childName: string);
C++ の場合は、TfrMainprivate: 宣言に次の関数宣言を追加します。
void __fastcall CreateChildForm( const AnsiString childName );
  1. Delphi の場合は、スクロールして implementation セクションに移動し、次のコードを入力します。
procedure TfrMain.CreateChildForm (const childName: string);
var Child: TfrChild;
begin
  Child := TfrChild.Create(Application);
  Child.Caption := childName;
end;
C++ の場合は、uMain.cpp に次の関数定義を追加します。
void __fastcall TfrMain::CreateChildForm( const AnsiString childName )
{
  TfrChild *Child = new TfrChild( Application );
  Child->Caption = childName;
}

子ウィンドウを閉じるためのイベント ハンドラ コードを記述する

  1. 必要であれば frMain フォームをアクティブにし、それから[オブジェクト インスペクタ][イベント]タブを選択します。
  2. OnClose イベントをダブルクリックします。コード エディタが開き、TfrMain.FormClose(Delphi)または TfrMain::FormClose(C++)のイベント ハンドラ ブロックにカーソルが置かれます。
  3. Delphi の場合は、次のコードを入力します。
Action := caFree;

C++ の場合は、次のコードを入力します:

Action = caFree;

メイン メニューとコマンドを作成する

  1. [ツール パレット]の[Standard]ページから、[TMainMenu]コンポーネントをメイン フォームに配置します。
  2. TMainMenu コンポーネントをダブルクリックします。メニュー デザイナ(frMain.MainMenu1)が開きます。このとき、最初の空のメニュー項目が強調表示されています。
  3. [オブジェクト インスペクタ][プロパティ]タブで、Name プロパティに「mnFile」、Caption プロパティに「ファイル (&F)」と入力し、Enter キーを押します。メニュー デザイナの最初のメニュー項目の名前が[ファイル]と表示されます。
  4. メニュー デザイナで[ファイル]を選択します。空のコマンド フィールドが[ファイル]グループに表示されます。空のコマンドを選択します。
  5. [オブジェクト インスペクタ]で、Name プロパティに「mnNewChild」、Caption プロパティに「子の新規作成 (&N)」と入力し、Enter キーを押します。メニュー デザイナの最初の[ファイル]コマンドの名前が[子の新規作成]と表示され、[子の新規作成]のすぐ下に空のコマンド フィールドが表示されます。
  6. 空のコマンドを選択します。
  7. [オブジェクト インスペクタ]で、Name プロパティに「mnCloseAll」、Caption プロパティに「すべて閉じる (&C)」と入力し、Enter キーを押します。メニュー デザイナの 2 番目のファイル コマンドの名前が[すべて閉じる]と表示されます。

[子の新規作成]コマンドおよび[すべて閉じる]コマンドのイベント ハンドラを追加する

  1. 必要であればメニュー デザイナを開き、[子の新規作成]を選択します。
  2. [オブジェクト インスペクタ]で、[イベント]タブの OnClick イベントをダブルクリックします。コード エディタが開き、TfrMain.mnNewChildClick(Delphi)または TfrMain::mnNewChildClick(C++)のイベント ハンドラ ブロックにカーソルが置かれます。
  3. Delphi の場合は、次のコードを入力します。
CreateChildForm('Child '+IntToStr(MDIChildCount+1));

C++ の場合は、次のコードを入力します:

CreateChildForm( "Child " + IntToStr( MDIChildCount + 1 ) );
  1. メニュー デザイナで[すべて閉じる]を選択します。
  2. [オブジェクト インスペクタ]で、[イベント]タブの OnClick イベントをダブルクリックします。コード エディタが開き、TfrMain.mnCloseAllClick(Delphi)または TfrMain::mnCloseAllClick(C++)のイベント ハンドラ ブロックにカーソルが置かれます。
  3. Delphi の場合は、次のコードを入力します。
for i:=0 to MDIChildCount - 1 do
  MDIChildren[i].Close;
C++ の場合は、次のコードを入力します。
for( int i = 0; i < MDIChildCount; i++ ) {
       MDIChildren[i]->Close();
}
  1. Delphi の場合は、ローカル変数 i を宣言します。それが終わったら、イベント ハンドラ コードの最初の 2 行は次のようになっているはずです。
procedure TfrMain.mnCloseAllClick(Sender: TObject);
  var i: integer;

メモ: このイベント ハンドラでは、メイン ウィンドウ内の子ウィンドウを最小化します。子ウィンドウを閉じるには、子フォームに OnClose 手続きを追加する必要があります(この次に説明します)。

子ウィンドウを閉じる

  1. 子フォームをアクティブにします。
  2. [オブジェクト インスペクタ]で、[イベント]タブの OnClose イベントをダブルクリックします。コード エディタが開き、TfrChild.FormClose(Delphi)または TfrChild::FormClose(C++)のイベント ハンドラ ブロックにカーソルが置かれます。
  3. Delphi の場合は、次の文を入力します。
Action := caFree;
C++ の場合は、次の文を入力します。
Action = caFree;

MDI アプリケーションをコンパイルして実行する

  1. [実行|実行] を選択します。
  2. アプリケーションが実行され、[ファイル]コマンドが表示されます。
  3. [ファイル|子の新規作成] を何度か選択します。[子の新規作成]コマンドを選択するたびに、子ウィンドウが 1 つ表示されます。
  4. [ファイル|すべて閉じる] を選択します。子ウィンドウが閉じます。

関連項目