VCL モーダレス フォームを動的に作成する
モーダレス フォームは、別のウィンドウによって隠されるか、ユーザーによって閉じるまたは最小化されるまで表示される、ウィンドウのことです。 RAD Studio を使用して、次のプロシージャは、モーダレス フォームを動的に作成します。
VCL アプリケーションの構築は、次の手順で行います:
- プロジェクト ディレクトリを作成。
- プロジェクトに 2 つのフォームを作成。
- 2 つ目のフォームの呼び出しを起動時に削除。
- フォームをリンク。
- モーダル フォームを作成、表示するコントロールを、メイン フォーム上に作成。その後、イベント ハンドラを記述。
- アプリケーションをビルドして実行。
2 つのフォームを作成するには
- [ファイル|新規作成|その他...|Delphi プロジェクト(または C++Builder プロジェクト)] を選択し、[VCL フォーム アプリケーション]アイコンをダブルクリックします。 VCL フォーム デザイナ に Form1 が表示されます。
- [ファイル|新規作成|その他...|Delphi プロジェクト|Delphi ファイル] または [ファイル|新規作成|その他...|C++Builder Files] を選択し、[フォーム] アイコンをダブルクリックします。 VCL フォーム デザイナ に Form2 が表示されます。
Form2 の呼び出しを起動時に削除するには
- [プロジェクト|オプション...]を選択します。 [プロジェクト オプション] ダイアログが表示されます。
- Form2 を [自動作成フォーム]リストで選択し、[>] をクリックします。 Form2 が [使用可能フォーム]リストに移動します。
- [OK] をクリックして、ダイアログを閉じます。
Form1 と Form2 をリンクするには
- Form1 を選択し、[ファイル|ユニットを使う]を選択します。 [ユニットの使用]ダイアログが表示されます。
- Form2(Form1 が参照する必要があるフォーム)を、このダイアログで選択します。
- [OK] をクリックします。 Delphi の場合、ユニット名 Unit2 を含む uses 句は、Unit1 の実装セクション内に配置されます。 C++ の場合、#include "Unit2.h" 指令が、Unit1.h に追加されます。
Form2 から Form1 を表示する
- 必要に応じて Form1 を選択し、それから、ツール パレットの [Standard] ページから、フォームにボタンを配置します。
- オブジェクト インスペクタ で Button1 を選択した状態で、[イベント]タブ上で OnClick イベントをダブルクリックします。 コード エディタ が、TForm1.Button1Click(Delphi)、または、TForm1::Button1Click(C++)のイベント ハンドラ ブロックにカーソルがある状態で表示されます。
- 次のイベント処理コードを入力します:
Form2 := TForm2.Create(self); Form2.Show;
Form2 = new TForm2( this ); Form2->Show();
メモ: アプリケーションが、さらにモーダレス フォームのインスタンスを必要とする場合には、インスタンスそれぞれ毎に、別のグローバル変数を宣言します。 大抵の場合は、フォームの作成時に作られたグローバル参照を使用します(その変数名は、フォームの Name プロパティに一致します)。
アプリケーションをビルドして実行するには
- プロジェクトでファイルを保存します。それから、[実行|実行」を選択します。 アプリケーションが実行され、Form1が表示されます。
- ボタンをクリックします。 Form2 が表示されます。
- Form1 をクリックします。 Form1 がアクティブ フォームになります。 Form2 は、ユーザーが最小化、または閉じるまで表示されます。