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

    function setDataAtColumn(obj, C, maindata, headdata)
%SETDATAATCOLUMN Push new data into a single table column
%
%  SETDATAATCOLUMN(OBJ, COL, MAINDATA) sets a new column of data at COL,
%  and updates the display object.  COL  must be within the current limits
%  of the main data array.
%
%  SETDATAATCOLUMN(OBJ, COL, MAINDATA, HEADDATA) also sets a new piece of
%  data into the column header data array.

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


if nargin>3
    UPDATE_HEADER = true;
else
    UPDATE_HEADER = false;
end
szD = obj.pGetDataSize;

if C<=szD(2)
    if C==0
        error(message('mbc:scrolltable:InvalidIndex1'));
    elseif length(maindata)~=szD(1)
        error(message('mbc:scrolltable:InvalidArgument2'));
    elseif UPDATE_HEADER && obj.pDataIsArray(obj.ColumnHeaderData) ...
            && C>length(obj.ColumnHeaderData)
        error(message('mbc:scrolltable:InvalidIndex2'));
    else
        i_quietsetdata(obj, obj.scrollTable_DataListeners, 'MainData', C, maindata);
        if UPDATE_HEADER
            i_quietsetdata(obj, obj.scrollTable_DataListeners, 'ColumnHeaderData', C, headdata);
        end
        if obj.isAlive
            if (C>=obj.CurrentColumn) && (C<(obj.CurrentColumn+obj.numCols))
                % Repaint display
                dispC = C-obj.CurrentColumn+1;
                obj.paintObjects(obj.MainObjects(:, dispC), obj.indexData(obj.MainData, obj.CurrentRow, obj.CurrentRow+obj.numRows-1, C, C), obj.CurrentRow, C);
                if UPDATE_HEADER && obj.ShowColumnHeaders
                    obj.paintObjects(obj.ColumnHeaderObjects(dispC), obj.indexData(obj.ColumnHeaderData, C, C), 0, C);
                end
            end
        end
    end
end



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