C++builder 两个TMemo对象共享一个TPopupMenu
我有一个C++builder 两个TMemo对象共享一个TPopupMenu,c++builder,vcl,C++builder,Vcl,我有一个t表单,它有两个TMemo对象和一个TPopupMenu。两个TMemos使用相同的TPopupMenu 弹出菜单中有一项通过使用按钮来“清除”备忘录 我的问题是,当单击其中一个TMemos上的菜单项时,如何确定哪个TMemo是显示TPopupMenu的菜单项 我在战术的执行功能中有以下代码: TAction* action = dynamic_cast<TAction*>(Sender); TMenuItem* item = dynamic_cast<TMenuIt
t表单
,它有两个TMemo
对象和一个TPopupMenu
。两个TMemo
s使用相同的TPopupMenu
弹出菜单中有一项通过使用按钮来“清除”备忘录
我的问题是,当单击其中一个TMemo
s上的菜单项时,如何确定哪个TMemo
是显示TPopupMenu
的菜单项
我在战术
的执行功能中有以下代码:
TAction* action = dynamic_cast<TAction*>(Sender);
TMenuItem* item = dynamic_cast<TMenuItem*>(action->ActionComponent);
if(item)
{
if(dynamic_cast<TMemo*>(item->Owner))
{
dynamic_cast<TMemo*>(item->Owner) -> Clear();
}
}
TAction*action=dynamic_cast(发送方);
TMenuItem*item=dynamic\u cast(动作->动作组件);
如果(项目)
{
if(动态施法(项目->所有者))
{
动态施法(物品->所有者)->清除();
}
}
但是TMenuItem
的所有者不是TMemo
有什么提示吗?我希望避免使用两种不同的TPopupMenu
s.您需要使用TPopupMenu::PopupComponent
属性来了解哪个TMemo
调用了菜单:
TMemo *memo = dynamic_cast<TMemo*>(PopupMenu1->PopupComponent);
if (memo)
memo->Clear();
tpopumenu.PopupComponent
应该会有所帮助Owner
一点帮助都没有,因为它只是告诉您释放菜单本身的原因,并且将是它被拖放到的表单。
TAction* action = static_cast<TAction*>(Sender);
TMenuItem* item = dynamic_cast<TMenuItem*>(action->ActionComponent);
if (item)
{
TPopupMenu *popup = dynamic_cast<TPopupMenu*>(item->GetParentMenu());
if (popup)
{
TMemo *memo = dynamic_cast<TMemo*>(popup->PopupComponent);
if (memo)
memo->Clear();
}
}