传说ItemHitFcn与多个功能使用左,右击按钮

8视图(30天)
我使用了传说 ItemHitFcn 频繁切换visiblity特定的行,但想添加一个上下文菜单的传说,将允许用户删除所选项目。每个传奇的在线帮助文档属性,似乎 ItemHitFcn 房地产有能力这样做,但我不清楚如何在代码中实现这个。
理想情况下,用户能够切换可见性与鼠标左键打开上下文菜单用鼠标右键(能得到这么远)删除目标(到目前为止)失败。
我想,这与我一直试图分配上下文菜单。下面的代码提供了示例部分。
功能切换可见性:
函数LineVisible(~、事件)
% LINEVISIBLE切换可见线的情节通过选择传奇。
% %粗糙添加条目删除代码的例子
%如果strcmp (event.SelectionType,“alt”)
%删除(event.Peer)
%返回
%结束
%检查当前的源情节和可见性设置开关到相反的状态。
如果比较字符串(event.Peer.Visible“上”)
event.Peer。可见=“关闭”;
其他的
event.Peer。可见=“上”;
结束
结束
一般的情节与转让 LineVisible 的传说 ItemHitFcn
%的情节设置ItemHitFcn任务线可见性
x = linspace (0, 10);
日元= sin (x);y2 = cos (x);y3 = sin (x) + cos (x);y4 = sin (x) * cos (x);
hFig =图;
情节(x, y₁, x, y2, x, y3, x, y4)
hLeg =传奇(1号线的,“第2行”,3号线的,4号线的);
hLeg。ItemHitFcn = @LineVisible;
ItemHitFcn创建上下文菜单和分配
% %初始化上下文菜单对象
hCM = uicontextmenu (hFig);
% %创建上下文菜单项,将传奇的ItemHitFcn打电话
%试图分配作为上下文菜单的ItemHitFcn,它并不存在
m1 = uimenu (hCM,“文本”,“删除项”,“MenuSelectedFcn”,@ItemHitFcn);
%菜单项被选中时没有明显的影响。
m2 = uimenu (hCM,“文本”,“删除项”);
%调用@LineVisible,但不使用ItemHitFcn表示对等
%对象删除
m3 = uimenu (hCM,“文本”,“删除项”,“MenuSelectedFcn”,@LineVisible);
使用@ %错误(hLeg) ItemHitFcn (hLeg)
m4 = uimenu (hCM,“文本”,“删除项”,“MenuSelectedFcn”@ (hLeg) ItemHitFcn (hLeg));
% % Assgin对象传说快捷菜单属性
hLeg。快捷菜单= hCM;

接受的答案

艾伦
艾伦 2022年5月10日
编辑:艾伦 2022年5月10日
简单的细节被忽视的传奇 ItemHitFcn 回调的文档。
  • “alt”单击鼠标右键,鼠标按钮(Windows和Mac),或鼠标中键(Mac和Linux)。如果快捷菜单属性包含一个有效的上下文菜单(默认),那么这种类型的点击打开上下文菜单而不是触发ItemHitFcn回调。
设置 快捷菜单 财产等于允许空数组值 ItemHitFcn 在鼠标右键使用的行为预期。
%设置测试情节与传奇
x = linspace (0, 10);
日元= sin (x);y2 = cos (x);y3 = sin (x) + cos (x);y4 = sin (x) * cos (x);
hFig =图;
情节(x, y₁, x, y2, x, y3, x, y4)
hLeg =传奇(1号线的,“第2行”,3号线的,4号线的);
%指定回调函数
hLeg。ItemHitFcn = @LineVisible;
hLeg。快捷菜单= [];
%或
%设置(hLeg ItemHitFcn, @LineVisible,“快捷菜单”,[])
代码与鼠标左键切换线可见性和打开上下文菜单行删除。
函数LineVisible (src、事件)
% LINEVISIBLE切换可见线的情节通过选择传奇
%或删除不需要的物品。
%确定哪个鼠标按钮是用来激活ItemHitFcn回调
%的传说
如果比较字符串(event.SelectionType“正常”)
%检查当前可见性设置的情节和来源
%切换到相反的状态
如果比较字符串(event.Peer.Visible“上”)
event.Peer。可见=“关闭”;
其他的
event.Peer。可见=“上”;
结束
elseif比较字符串(event.SelectionType“alt”)
%创建一个上下文菜单,启动后立即
%这个函数执行完成
hCM = uicontextmenu (gcf);
uimenu (hCM,“文本”,“Delete Item”,“MenuSelectedFcn”,{@DeleteItem、事件});
src。快捷菜单= hCM;
结束
结束
% %
函数hItem DeleteItem (~ ~)
%删除目标项目和重置传奇的快捷菜单属性
删除(hItem.Peer)
hItem.Source。快捷菜单= [];
结束

更多的答案(0)

s manbetx 845


释放

R2022a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!