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

    function doSetupGrid(obj)
%DOSETUPGRID Set the table elements into the grid layout
%
%  SETUPGRID(OBJ) sets up the grid layout to correctly contain the table
%  display objects and the scrollbars.

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


if obj.canPaint && obj.isCreatedCorrect
    % Flags to indicate that various components should be visible or not
    SHOW_VSCROLL = (diff(obj.ScrollRowLimits)>0);
    
    [nR_obj, nC_obj] = size(obj.MainObjects);
    if nC_obj>1
        warning(message('mbc:mbcwidgets:columnTable:InvalidData'));
    end
    nR = nR_obj+1;
    if obj.ShowColumnHeaders
        nR = nR+1;
    end
    nC = 1;
    if SHOW_VSCROLL
        nC = nC+1;
    end
    
    rowsizes = [repmat(obj.RowHeight, 1, nR-1) -1];
    colsizes = -1;
    els = cell(nR, nC);
    
    if obj.ShowColumnHeaders
        rowsizes(1) = obj.TitleHeight;
        els{1,1} = obj.ColumnHeaderObjects;
        els = i_convert_to_cell(els, obj.MainObjects, 2, 1);
    else
        els = i_convert_to_cell(els, obj.MainObjects, 1, 1);
    end
    if SHOW_VSCROLL
        els{1,2} = obj.vSliderbar;
        colsizes = [-1 obj.ScrollbarWidth];
        mergeargs = {'mergeblock', {[1 nR], [2 2]}};
    else
        mergeargs = {};
    end
    set(obj.gridObject, ...
        'clearmerge', [], ...
        'dimension', [nR, nC], ...
        'rowsizes', rowsizes, ...
        'colsizes', colsizes, ...
        'elements', els, ...
        mergeargs{:});
    i_setvisible(obj.vSliderbar, obj.Visible, SHOW_VSCROLL);
else
    set(obj.gridObject, 'clearmerge', [], ...
        'dimension', [0 0], ...
        'rowsizes', [], ...
        'colsizes', [], ...
        'elements', {});
    set(obj.vSliderbar, 'Visible', 'off');
end



function hcell = i_convert_to_cell(hcell, h, Rstart, Cstart)
[nR_h, nC_h] = size(h);
Rstart_adj = Rstart-1;
Cstart_adj = Cstart-1;
for n = Rstart:(Rstart_adj+nR_h)
    n_hindex = n-Rstart_adj;
    for m = Cstart:(Cstart_adj+nC_h)
        hcell{n, m} = h(n_hindex, m-Cstart_adj);
    end
end


function i_setvisible(hObject, onstate, boolvalue)
if boolvalue
    set(hObject, 'Visible', onstate);
else
    set(hObject, 'Visible', 'off');
end