2

我在 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);

任何帮助将非常感激。

4

1 回答 1

3

你还没有传递handles给你的回调。

尝试将您的set呼叫调整为:

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

您的函数定义为:

function runTableCallback(hObject, callbackdata, handles)
于 2015-11-09T18:32:03.527 回答