www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@xregGui/@labelcontrol/generateOffset.m

    function generateOffset(h)
%GENERATEOFFSET Make auto settings for baseline offset
%
%  GENERATEOFFSET(OBJ) sets the label positioning based on the type of the
%  current control.

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


if h.hascontrol && strcmp(h.BaselineOffsetMode,'auto')
    set(h.BaselineList,'enabled','off');
    
    ctrl = h.Control;
    if isgraphics(ctrl,'uicontrol')
        style=get(ctrl,'Style');
        switch style
            case 'text'
                h.BaselineOffset=-10;
                h.BaselineOffsetZero='top';
            case 'edit'
                h.BaselineOffset=-3;
                h.BaselineOffsetZero='middle';
            case 'listbox'
                h.BaselineOffset=-12;
                h.BaselineOffsetZero='top';
            case {'pushbutton','togglebutton'}
                h.BaselineOffset=-3;
                h.BaselineOffsetZero='middle';
            case 'popupmenu'
                h.BaselineOffset=-15;
                h.BaselineOffsetZero='top';
            case {'radiobutton','checkbox'}
                h.BaselineOffset=-4;
                h.BaselineOffsetZero='middle';
            otherwise
                h.BaselineOffset=-4;
                h.BaselineOffsetZero='middle';
        end
    elseif isa(ctrl, 'mbcgui.widget.Label')
        % Same as a text uicontrol
        h.BaselineOffset=-10;
        h.BaselineOffsetZero='top';
    elseif isa(ctrl, 'mbcgui.widget.IconText')
        switch ctrl.Style
            case 'line'
                h.BaselineOffset=-5;
                h.BaselineOffsetZero='middle';
            case 'paragraph'
                h.BaselineOffset=-12;
                h.BaselineOffsetZero='top';
            case 'item'
                % The text is below an icon.  There isn't a clear best way to
                % label this so just centre the text.
                h.BaselineOffset=-4;
                h.BaselineOffsetZero='middle';
        end
        
    elseif isa(ctrl, 'mbcgui.widget.Spinner')
        h.BaselineOffset=-3;
        h.BaselineOffsetZero='middle';
    elseif isa(ctrl, 'xregGui.labelcontrol')
        % Take values from labelcontrol we are labelling.
        h.BaselineOffset=ctrl.BaselineOffset;
        h.BaselineOffsetZero=ctrl.BaselineOffsetZero;
    else
        h.BaselineOffset=-5;
        h.BaselineOffsetZero='middle';
    end
    set(h.BaselineList,'enabled','on');
end