【问题标题】:Access handles structure in CellEditCallback functionCellEditCallback 函数中的访问句柄结构
【发布时间】:2015-11-09 18:02:30
【问题描述】:

我正在 Matlab 指南中创建一个 uitable,它根据用户将输入的几个参数自动生成文件名。对于表中的每个文件名,可以指定运行时间和运行次数。

我正在尝试为 uitable 编写一个回调函数,该函数将在编辑运行时间或运行次数时自动更新运行名称。这是我写的回调函数。

function runTableCallback(hObject,callbackdata)
    numval = eval(callbackdata.EditData);
    r = callbackdata.Indices(1);
    c = callbackdata.Indices(2);

    if c==2
        handles.runnums(r,1)=numval;
        hObject.Data{r,c} = numval;
    elseif c==3
        handles.runtimes(r,1)=numval;
        hObject.Data{r,c} = numval;
    end

    [runlog,runnames,runnums,runtimes,rundesc]=generateRuns(hObject,handles);

    handles.runlog=runlog;
    handles.runnames=runnames;
    handles.runnums=runnums;
    handles.runtimes=runtimes;
    handles.rundesc=rundesc;

    set(handles.uitable19,'Data',[handles.runlog,handles.runnames,handles.runnums,handles.runtimes]);

guidata(hObject, handles);

我需要调用 'generateRuns' 函数以使用已编辑的数据创建更新的表信息。然后,更新的信息将使用下一行的“设置”功能显示在表格中。但是,我收到以下错误:

未定义的函数或变量“句柄”。

如何在回调函数中访问句柄?回调函数是在 UI 控件中为另一个对象回调函数中的表指定的。

set(handles.uitable19,'CellEditCallback',@runTableCallback);

任何帮助将不胜感激。

【问题讨论】:

    标签: matlab callback matlab-guide matlab-uitable


    【解决方案1】:

    您尚未将handles 传递给您的回调。

    尝试将您的 set 调用调整为:

    set(handles.uitable19,'CellEditCallback', {@runTableCallback, handles});
    

    你的函数定义为:

    function runTableCallback(hObject, callbackdata, handles)
    

    【讨论】:

    • 谢谢,这似乎解决了我的问题。我知道为了在函数之间共享数据,必须做一个小改动。
    猜你喜欢
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2023-03-18
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多