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