マルチフォーム

マルチフォーム
• BCBでは親Formから子Formを呼び出すこ
とが出来る。
• Unit1.cppに子FromのヘッダーUnit2.hを
インクルードしておく
• 親Formから子Formのメソッド
– Show()
– ShowModal()
を使うことで呼び出せる。
マルチフォーム
• Show()
子Formは親Formと独立して動作する。
OKボタンやCancelボタンを押したときの
動作はプログラムで記述する
マルチフォーム
• ShowModal()
子Formが動作中は、親Formは停止している。
OKボタンやCancelボタンは、そのプロパティ
ModalResultの値をmrOkやmrCancelに設定
しておくと、戻り値としてこれらの値を返し、
子Formを閉じる。
マルチフォーム
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->ShowModal();
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form2->Show();
}
マルチフォーム
• Form間のデータのやり取り
Formのpublicプロパティを使うことで
やり取りできる
マルチフォーム
• 例:Form2にpublicのAnsiString Dataを持たせる。
class TForm2 : public TForm
{
__published:
// IDE 管理のコンポーネント
TButton *Button1;
TButton *Button2;
TEdit *Edit1;
void __fastcall Button1Click(TObject *Sender);
private: // ユーザー宣言
public:
// ユーザー宣言
__fastcall TForm2(TComponent* Owner);
AnsiString Data;
};
マルチフォーム
• Form2で、Dataにデータを持たせる。
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Data = Edit1->Text;
}
マルチフォーム
• Form1で、Form2のShowModalがmrOkのとき、
Form2のDataを読み取る。
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (Form2->ShowModal() == mrOk)
Edit1->Text = Form2->Data;
}