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

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

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


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

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

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

  1. [ファイル|新規作成|Windows VCL アプリケーション - Delphi] または [ファイル|新規作成|Windows VCL アプリケーション - <CBuilder>] に移動します。
  2. オブジェクト インスペクタで、FormStyle プロパティを fsMDIForm に設定します。
  3. frMain などのわかりやすい名前を Name プロパティに入力します。
  4. uMain.pas(Delphi)やuMain.cpp(C++)などのわかりやすい名前を Name プロパティに入力します。

子ウィンドウを作成する

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

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

  1. [プロジェクト|オプション...|フォーム]を選択します。[<プロジェクト名> のプロジェクト オプション]ダイアログ ボックスが表示されます。
  2. frChild[自動生成フォーム] リストから選択し、[>] をクリックして[使用可能フォーム]リストに移動し、[OK]をクリックします。
  3. frMain フォームを選択してアクティブにし、[コード]ビューに切り替えます。
  4. Delphi の場合、uses セクションにスクロールし、uChild をリストに追加します。 C++ の場合、#include "Child.h"uMain.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. [ツール パレット]の[標準]ページから、[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. [ファイル|すべて閉じる] を選択します。 子ウィンドウが閉じます。

関連項目