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