Home 矢印 プルダウンメニュー、ポップアップメニュー関連 矢印 BCB Tips
Top
フレームが表示されていない方はこちら↑




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;
}
              
赤字は変数名なので記述の変更が可能。
青字は関数名なので記述の変更が可能。
関連項目: イベントの発生元オブジェクトを調べる(メンバーズページではリンクしています。)