|
TMenuItem型のチェックON/OFFを共通関数で処理する
|
|
CheckBoxの場合はマウスでクリックすると、チェックマークのON/OFFを自動で処理してくれます。
しかし、TMenuItem型をアイテムに持つプルダウンメニューやポップアップメニューでは自動で処理してくれません。
(というか何も処理されません。)
よって自前でON/OFFの処理を行なう必要があるのですが、何ヶ所も同じ記述をする事になります。
この処理を共通関数化すると以下の様になります。
|
|
■ サンプルソース ■(例:Unit1.h)
private: // ユーザー宣言
void __fastcall PDchk_Change(TObject *Sender);
※ 青字は関数名なので記述の変更が可能。
|
|
■ サンプルソース ■(例:Unit1.cpp)
void __fastcall TForm1::PDchk_Change(TObject *Sender)
{
TMenuItem *pdmenu_chk = ( TMenuItem* )Sender;
if( pdmenu_chk->Checked == true ){
pdmenu_chk->Checked = false;
}
else{
pdmenu_chk->Checked = true;
}
}
※ 赤字は変数名なので記述の変更が可能。
※ 青字は関数名なので記述の変更が可能。
|
|
後はこの関数を呼び出すだけです。
上記サンプルのpdmenu_chkにはそのイベントが発生したオブジェクト名が入りますので、
pdmenu_chk によりイベントの発生元オブジェクトを調べる事が出来ます。
又、pdmenu_chk を使ってそれぞれのメンバ関数やプロパティを参照できます。
|
|
チェックマークのON/OFFだけなら、切り替え部分を以下の様に1行で記述する事もできます。
|
|
■ サンプルソース ■(例:Unit1.cpp)
void __fastcall TForm1::PDchk_Change(TObject *Sender)
{
TMenuItem *pdmenu_chk = ( TMenuItem* )Sender;
pdmenu_chk->Checked == !pdmenu_chk->Checked;
}
※ 赤字は変数名なので記述の変更が可能。
※ 青字は関数名なので記述の変更が可能。
|
|
関連項目: イベントの発生元オブジェクトを調べる(メンバーズページではリンクしています。)
|