导游:创建回调后创建另一个函数的句柄

1视图(30天)
大家好,我是使用Matlab 2007 b和指导和我创造情节处理在一个按钮的回调函数。对于那些情节(点),我想创建一个上下文菜单,允许用户删除一个特定的点。所以当你点击右键,单击上下文选择“删除”,删除点和一些用户数据删除和存储。这个作品。不过我想也包括回调函数执行另一个按钮使用一个已经存在的功能。可悲的是处理的功能还不清楚,或者我不能正确地算出来。我会尽量在一个示例来说明:
%的向导功能:
函数varargout = WPE_Developer(变长度输入宗量)
%一些东西
%
函数WPE_Developer_OpeningFcn (hObject eventdata处理,变长度输入宗量)
%的东西等等。
%
函数MY_CALLBACK (hObject eventdata处理,变长度输入宗量)
%函数从一个按钮点击,x和y_matrix示例值
y_matrix = (1 2 3 4 5 6; 1 2 3 4 5 6; 1 2 3 4 5 6);
x = (10000、20000、30000);
%
j = 1:尺寸(y_matrix, 1)
k = 1:尺寸(y_matrix, 2)
清晰的临时cmenu callbackstring;
temp =情节(x (j), y_matrix (j, k),“b”。);
cmenu = uicontextmenu;
集(temp,“uicontextmenu”,cmenu);
callbackstring = [%调弦
'处理= guidata (gcbf);“
sprintf (handles.DATA. % s %年代(% d % d) =南;”CarID_Name y_get, j, k)
“project_changed(真的,处理),“……
“guidata (gcbf、处理);”
“删除”(gco);];
uimenu (cmenu
“标签”sprintf (“删除点(% 06.0 | % 06.2 f)”x (j), y_matrix (j, k)),
“回调”,callbackstring);%这是删除的回调
结束
结束
%
函数project_changed(真的,处理)
%这个函数是未知的,从上面的点处理回调
我现在的代码(5 k线,所以我不想把这里的一切)。当激活线
“project_changed(真的,处理),“……
project_changed不知道处理这我能理解。错误如下:
? ? ?未定义的函数或方法的project_changed输入参数类型的“结构”。
? ? ?错误而评估uimenu回调
是否有办法解决这个问题,使这个函数“期间被回调”?分裂成多个。m文件不是我想要的解决方案。我发现事情@-calls和一些回调属性,但我似乎没有找到解决的办法。
我感谢任何帮助,谢谢。

接受的答案

Dimitris Iliou
Dimitris Iliou 2016年10月12日
如果我理解正确的话,你要调用的函数 project_changed 通过回调函数 uimenu 这导致你描述的错误。
这种行为是由回调函数是这一事实 callbackstring 变量。由于这是一个只是一个字符串,调用函数是不工作的,因为可能是检查。
为了使你的“可见”功能,您需要创建一个单独的回调函数 uimenu 。要做到这一点,替换
callbackstring = [“…]
callbackstring = {@uimenu_callback, CarID_Name y_get, j, k};
在哪里 uimenu_callback 如下功能:
函数uimenu_callback (hObject、事件、CarID_Name y_get, j, k)
处理= guidata (gcbf);
sprintf (handles.DATA. % s %年代(% d % d) =南;”、CarID_Name y_get j k);
project_changed(真的,处理);
guidata (hObject处理);
删除(gco);
在这个函数中, sprintf 应该改变 eval 为了评估作为命令的字符串。同样,如果 guidata (gcbf) 不给你吗 处理 ,你应该考虑他们作为参数传递给回调函数。
作为边注,我建议使用 回调函数 而不是 调“字符串” ,因为这将使您能够执行调试容易。

更多的答案(0)

类别

找到更多的在交互控制和回调帮助中心文件交换

s manbetx 845

社区寻宝

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

开始狩猎!