今回は標準のボタン(TButton)です。
これが無いと、なにかと始まりません...
基本は設定してクリックイベントを設定するだけなので
ちょっと気になってたけど使ってないプロパティを試してみる。
◆標準ボタン(TButton)のプロパティ
[Cancel] trueにするとESCキーを押せばOnClickイベントを呼べる。
フォーカスがあたって無くても呼ばれてました。
[ModalResult] モーダルのフォーム上にボタンを設置して、このプロパティを
mrNone以外にするとOnClickイベントを使わずに設定した戻り値で
閉じる事が出来る。
設定できる値:
mrOk,mrCancel,mrAbort,mrRetry,mrIgnore,mrYes,mrNo,mrAll,mrNoToAll,mrYesToAll
というわけで、ModalResultを試してみた。
まずは、Form1上にモーダルフォームのForm2を表示する為のボタンを配置します。
次にメニューの、ファイル -> 新規作成 -> フォームからForm2を作成し、
今回試してみるボタンを配置します。
ボタンの[ModalResult]プロパティは、mrNone以外で何か設定してみます。
OnClickイベントで、Form2->ShowModal();を呼び、
戻り値でModalResultの値を判定します。
Form2側はボタンのプロパティ以外、設定しなくても良いです。
<Unit1.cpp>
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
// モーダルでForm2を表示する
void __fastcall TForm1::Form2BtnClick(TObject *Sender)
{
// Form2を表示
int ret = Form2->ShowModal();
// モーダルフォームの戻り値で判定
switch( ret ){
case mrOk:
ShowMessage("mrOk:OK");
break;
case mrCancel:
ShowMessage("mrCancel:キャンセル");
break;
case mrAbort:
ShowMessage("mrAbort:中止");
break;
case mrRetry:
ShowMessage("mrRetry:再試行");
break;
case mrIgnore:
ShowMessage("mrIgnore:無視");
break;
case mrYes:
ShowMessage("mrYes:はい");
break;
case mrNo:
ShowMessage("mrNo:いいえ");
break;
case mrAll:
ShowMessage("mrAll:すべて");
break;
case mrNoToAll:
ShowMessage("mrNoToAll:すべていいえ");
break;
case mrYesToAll:
ShowMessage("mrYesToAll:すべてはい");
break;
default:
ShowMessage("不明");
break;
}
}
//---------------------------------------------------------------------------
<Unit2.cpp>
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
使い道があるかは分からんけど
とりあえずこれで。