在按钮回调之前触发CellEditCallback

用户3793959

我有一个带用户界面的GUI,用户可以在其中编辑值。我有该表的CellEditCallback函数,只要用户在编辑单元格时按Enter或在单元格外部单击,便会触发并检查单元格中的输入错误。效果很好,但是我还有一个使用该表中数据的按钮,而我当前的问题是,在单击单元格之外的任何其他位置之前或在按下Enter键之前单击该按钮时,将运行按钮回调首先,该回调完成后,CellEditCallback将运行。这不是理想的,因为我需要在计算中使用数据之前检查错误。那么,有人对如何首先运行CellEditCallback函数有任何想法吗?

这段代码产生了我遇到的问题:

% If you edit a cell and immediately click the button before clicking
% outside the cell or before hitting enter, the button's callback triggers
% before the CellEditCallback

function temp
% Create Figure
mainFig = figure('Units','characters',...
    'Position',[45 5 200 50],...
    'Renderer','opengl');

% Create uitable
tempData(1:10,1:5) = {''};
mainTable = uitable('parent',mainFig,...
    'Units','characters',...
    'Position',[5 25 180 20],...
    'ColumnEditable',[true],...
    'ColumnFormat',{'char'},...
    'ColumnWidth',{150 150 150 150 150},...
    'Data',tempData,...
    'CellEditCallback',@enterDataCallback);

% Create Button
mainButton = uicontrol('Parent',mainFig,...
    'Units','characters',...
    'Position',[5 10 180 10],...
    'Style','pushbutton',...
    'String','Button',...
    'Callback',@buttonCallback);

    % Function for when cell data is edited
    function enterDataCallback(src,evt)
        disp('Cell Edited')
    end

    % Function for when a button is pressed
    function buttonCallback(src,evt)
        disp('Button Pressed')
    end
end

注意1:我确实尝试过使用uiwait和waitfor,但是问题不在于CellEditCallback函数被中断,它只是在按钮回调之后被触发。

注意2:这是函数功能的非常基本的描述,但是我确实需要按此顺序触发回调,因为在CellEditCallback中设置了诸如标志和外部函数中的重要变量之类的其他内容,因此我需要该回调在按钮一个之前运行。

谢谢!

用户3793959

我就此问题与MATLAB支持人员联系,他们告诉我,按此顺序发生的回调确实是一个错误,并且已在2014b预发行版中修复。但是,要解决该错误,我设法进行了一些混乱的编码,以从“按钮回调”内部调用CellEditCallback,然后设置一个标志以确保“按钮回调”完成后,CellEditCallback不触发。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

存储和检索数据(在按钮中)以供日后回调

来自分类Dev

MonoTouch-在按钮touchUpInside委托内未调用UIView.Animate完成回调

来自分类Dev

按钮点击回调

来自分类Dev

在按 2 插入增量序列之前触发

来自分类Dev

PeekMessage触发WndProc回调

来自分类Dev

Firebase回调不会触发

来自分类Dev

WCF回调不会触发

来自分类Dev

多次触发GTM回调

来自分类Dev

在按下按钮之前,如何执行代码?

来自分类Dev

Qt:脚本在按下按钮之前运行

来自分类Dev

HTML按钮在按下之前被执行

来自分类Dev

如何在按下之前激活按钮?

来自分类Dev

如何以编程方式触发带有按钮的可排序小部件的更新回调?

来自分类Dev

如何以编程方式触发带有按钮的可排序小部件的更新回调?

来自分类Dev

后退按钮回调函数在特定情况下失败或不触发

来自分类Dev

节点Telegraf回调按钮

来自分类Dev

贝宝按钮回调

来自分类Dev

在按钮文本的边界内单击会触发按钮

来自分类Dev

if语句将在回调之前同步执行?

来自分类Dev

JavaScript函数在回调完成之前完成

来自分类Dev

if语句将在回调之前同步执行?

来自分类Dev

在保存布尔字段的回调之前

来自分类Dev

JavaScript setInterval 在定义函数之前回调?

来自分类Dev

回调函数在原始函数之前执行

来自分类Dev

在订阅回调之前拦截 observables

来自分类Dev

AngularJS $ http回调未触发

来自分类Dev

CMAltimeter回调永远不会触发

来自分类Dev

回调,触发每个用户操作

来自分类Dev

jQuery fadeOut回调永远不会触发