フォームと子コントロールの間でポップアップメニューを切り替える
フォームのPopupMenuプロパティに何らかのポップアップメニューを設定すると、フォームの子コントロール(TEditやTMemoなど)が備えている独自のポップアップメニューが表示されなくなってしまいます。それを避けるには、フォームのOnContextPopupイベントハンドラで、表示するポップアップメニューを切り替えます。例えば、次のようにします。
//---------------------------------------------------------------------------
void __fastcall Form1::FormContextPopup(TObject* ASender, TPoint& AMousePos, bool& AHandled)
{
TControl* control = ControlAtPos(AMousePos, true, true);
if(control == NULL) {
PopupMenu = PopupMenu1;
}
else if(control->InheritsFrom(__classid(TEdit))) {
PopupMenu = NULL;
}
else {
PopupMenu = PopupMenu1;
}
}
//---------------------------------------------------------------------------
最終更新: 2008-09-22
戻る