2014-04-07 92 views
0

我有这些回调函数:如何从一个回调参数发送回其他回调?

function q7_OpeningFcn(hObject, eventdata, handles, varargin) 

----- 
----- 
function column_icrement_Callback(hObject, eventdata, handles) 

---- 
---- 

function row_icrement_Callback(hObject, eventdata, handles) 
---- 
---- 

function width_increment_Callback(hObject, eventdata, handles) 
--- 
--- 

这些都是过去的3个功能,我想从参数发送function q7_OpeningFcn(hObject, eventdata, handles, varargin)到。我已经成功加载了图片,但我不确定是否可以发送超过3个参数,或者不能调整行,列,高度,宽度?

回答

3

不要使用全局变量。使用handles结构来传递这些数据。

q7_OpeningFcn中,存储此数据(例如,handles.rows=...)。

在回调函数中,您将获得handles结构中的数据。

如果您在回调中更改handles中的值,则需要运行guidata(hObject,handles)。请参阅Store Data Using the guidata Function以及该示例。

您还可以使用setappdata/getappdata的名字("application data")来存储和检索数据。有关这两种方法的详细信息,请参阅文章Share Data Among Callbacks

Even more on storing data in a GUI

+0

你能说明我是如何使用shell的?我喜欢你的方式,因为它看起来像动态可以。编写代码时我无法生成? – user3508182

+0

如果您使用GUIDE创建GUI,它将在整个过程中使用,并对其使用情况发表评论。有关示例,另请参阅[这里](http://www.mathworks.com/help/matlab/ref/guidata.html)。查看我的编辑。 [Here](http://www.mathworks.com/help/matlab/creating_guis/share-data-among-callbacks.html#bt9p4xi)是一个简单的例子。 – chappjc

+0

thnx很多非常丰富。当我需要你的帮助时帮助我。 thnxx – user3508182

0

定义全局变量。
http://www.mathworks.com/help/matlab/ref/global.html

总结:把global row, col, ...q7_OpeningFcn开始。那么在负责这些变量中的一个的每个函数中,将global row=value放在该函数中。

例如:

function q7_OpeningFcn(hObject, eventdata, handles) 
    global column, row, width 
    doStuff 
end 

function column_icrement_Callback(hObject, eventdata, handles) 
    global column 
    column=value 
end 

function row_icrement_Callback(hObject, eventdata, handles) 
    global row 
    row=value 
end 

function width_increment_Callback(hObject, eventdata, handles) 
    global width 
    width=value 
end 
+0

除了这个问题。是否可以放置检查按钮是否已被删除然后递增该值? – user3508182