www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@mbcwidgets/@scrollTable/setDataAt.m

    function setDataAt(obj, R, C, data )
%SETDATAAT Push new data into a single table cell
%
%  SETDATAAT(OBJ, ROW, COLUMN, DATA) sets a new piece of data at ROW,
%  COLUMN and updates the display object.  ROW and COLUMN must both be
%  within the current limits of the data.  If either of R or C is set to
%  zero the data will be set into a header data array.

%  Copyright 2000-2008 The MathWorks, Inc. and Ford Global Technologies, Inc.


szD = obj.pGetDataSize;

if (R<=szD(1) &&C<=szD(2))
    if R==0 && C==0
        error(message('mbc:scrolltable:InvalidIndex'));
    elseif R==0
        i_quietsetdata(obj, obj.scrollTable_DataListeners, 'ColumnHeaderData', 1, C, data);
        if obj.ShowColumnHeaders && obj.isAlive
            if (C>=obj.CurrentColumn) && (C<(obj.CurrentCol+obj.numCols))
                dispC = C-obj.CurrentColumn+1;
                obj.paintObjects(obj.ColumnHeaderObjects(1, dispC), obj.indexData(obj.ColumnHeaderData, 1, 1, C, C), 0, C);
            end
        end
    elseif C==0
        i_quietsetdata(obj, obj.scrollTable_DataListeners, 'RowHeaderData', R, 1, data);
        if obj.ShowRowHeaders && obj.isAlive
            if (R>=obj.CurrentRow) && (R<(obj.CurrentRow+obj.numRows))
                dispR = R-obj.CurrentRow+1;
                obj.paintObjects(obj.RowHeaderObjects(dispR, 1), obj.indexData(obj.RowHeaderData, R, R, 1, 1), R, 0);
            end
        end
    else
        i_quietsetdata(obj, obj.scrollTable_DataListeners, 'MainData', R, C, data);
        if obj.isAlive
            if (R>=obj.CurrentRow) && (R<(obj.CurrentRow+obj.numRows)) && ...
                    (C>=obj.CurrentColumn) && (C<(obj.CurrentCol+obj.numCols))
                % Repaint display
                dispR = R-obj.CurrentRow+1;
                dispC = C-obj.CurrentColumn+1;
                obj.paintObjects(obj.MainObjects(dispR, dispC), obj.indexData(obj.MainData, R, R, C, C), R, C);
            end
        end
    end
end



function i_quietsetdata(obj, L, prop, Ridx, Cidx, newdata)
set(L, 'enabled', 'off');
try
    tmp = get(obj, prop);
    set(obj, prop,  []);
    tmp = obj.assignData(tmp, newdata, Ridx, Ridx, Cidx, Cidx);
    set(obj, prop, tmp);
    set(L, 'enabled', 'on');
catch ME
    set(L, 'enabled', 'on');
    rethrow(ME);
end