2

ユーザーが入力するいくつかのパラメーターに基づいてファイル名を自動的に生成する Matlab Guide で 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」関数を呼び出す必要があります。次に、その更新された情報は、次の行の「set」関数を使用して表に表示されます。ただし、次のエラーが発生します。

未定義の関数または変数の「ハンドル」。

コールバック関数内でハンドルにアクセスするにはどうすればよいですか? コールバック関数は、別のオブジェクト コールバック関数のテーブルの 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 に答える