⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tabfig.m

📁 这个东西是我在网上下的
💻 M
📖 第 1 页 / 共 2 页
字号:

for i = 1:numTabs,

  butDownFcn = ['tabfig(''tabpress'', gcbf, ''' strings{i} ''', ' sprintf('%d',i) ')'];

  leftEdge =...
    sheetPos(1)            + ...
    selectionHoffset       + ...
    sum(tabWidths(1:i))    + ...
    ( (i-1) * deltaTabs );

  posTab(1) = leftEdge;
  posTab(3) = tabWidths(i+1);

 addh=.0036; 
 posTab1(1)=posTab(1)/figWidth;
 posTab1(2)=posTab(2)/figHeight;
 posTab1(3)=posTab(3)/figWidth+addh;%                                      %%%%%%%%%这里调整tab之间的间距%%%%%%%%%%%%
 posTab1(4)=posTab(4)/figHeight;                                           %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

tabs(i)= uipanel('Parent',              hfig,...      
                 'unit',                'norm',...
                 'borderwidth',         1,...
                 'Position',            posTab1, ...
                 'ButtonDownFcn',       butDownFcn,...                     
                 'tag',                 'tabpanel'...                      %tab的panel的tag均为tabpanel
                 );
  text(i) = uicontrol('Parent',       tabs(i),...   
      'style',             'text',...
      'unit',              'norm',...
      'enable',            'inactive',...
      'hittest',           'off',...                                        
      'string',            strings{i}, ...                                 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      'HorizontalAlign',   'center', ...                                   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      'ButtonDownFcn',     butDownFcn, ...
      'position',          [0.05,0.2,.9,.6] ,... 
      'fontunit',           'pixels',...
       'foregroundcolor',   [0 0 0] ,...                                   %%%%%%%%%%%%这里改变tab字符的颜色%%%%%%%%%
       'fontsize',          12, ...                                        %%%%%%%%%%%%这里改变tab字符的大小%%%%%%%%%
      'fontname',          '宋体');                                        %%%%%%%%%%%%这里改变tab字符的字体%%%%%%%%%                              
      
 


  selectorPos(i, :) = [ ...
    leftEdge - selectionHoffset + leftBevelOffset + selectorLeftFudgeFactor ...
    posTab(2) ...
    posTab(3) + selectionHoffset - rightBevelOffset ...
    selectorHeight ...
  ];
selectorPos(i,1)=selectorPos(i,1)+1;                                       %%%%%%%%这里调整挡板位置%%%%%%%%%%%%%%%%%
selectorPos(i,2)=selectorPos(i,2)+.2;  
selectorPos(i,3)=selectorPos(i,3)+3;
selectorPos(i,4)=selectorPos(i,4);
end
 
color.presscolor=get(hfig,'color');                   %tab按下后的颜色
color.unpresscolor=[0.8055 0.7937 0.7471];            %tab未按下时的颜色
color.shadowcolor=[.1 .1 .2];                         %阴影色
color.highlightcolor=[1 1 1];                         %亮色
borderwidth=2;                                        %边宽
bordertype='beveledout';                              %效果,有beveledout etchedout beveledin etchedin etchedout none line

%==============================================================================
% 建立效果遮挡panel(由于tab标签在底板之上)
%==============================================================================
sheetPosActual = sheetPos;
sheetPosActual(4) = sheetPosActual(4) + topBevelOffset;
t32(1)=sheetPosActual(1)/figWidth;
t32(2)= posTab1(2)-.003;%;.945;
t32(3)=sheetPosActual(3)/figWidth-.0015;
t32(4)=.008;
sheet2 = uipanel( ...
  'Parent',             hfig, ...
  'unit',               'norm',...
  'borderwidth',        0,...
  'position',           t32, ...
  'bordertype',         'beveledout',...
  'tag',                'sheet2'...
   );
set(sheet2,'visible','on')

%==============================================================================
% 创建挡板
%==============================================================================
selector = uicontrol( ...
  'Parent',             hfig, ...
  'Style',              'text', ...
  'tag',                 'selector'...
);


set(selector,'userdata',figPos);                     
guidata(selector,color);

panel=findobj(hfig,'type','uipanel');  
set(panel,'bordertype',bordertype,...                                      %设定所有panel的视觉效果,如有不同在下面设定
   'shadowcolor',color.shadowcolor,...                       
   'highlightcolor',color.highlightcolor,...
   'borderwidth',borderwidth,...
   'back',color.unpresscolor);  

set(panel(end),'tag','mainpanel',...                                       %(MainPanel)设定主panel的tag,并设定MainPanel的颜色
    'back',color.presscolor);                    

set(sheet2,...
    'back',                 color.presscolor,...
    'shadowcolor',          color.presscolor,...
    'highlightcolor',       color.highlightcolor);                         %效果遮挡panel的颜色                                

ttext=findobj(hfig,'style','text');   
set(ttext,'back',color.unpresscolor);                                

%==========================================================================
% 将相关数据存贮在据容器中
%==========================================================================
DialogUserData.tabs             = tabs;
DialogUserData.selector         = selector;
DialogUserData.selectorPos      = selectorPos;
DialogUserData.selectionHoffset = selectionHoffset;
DialogUserData.selectionVoffset = selectionVoffset;
DialogUserData.leftBevelOffset  = leftBevelOffset;
DialogUserData.rightBevelOffset = rightBevelOffset;
DialogUserData.deltaTabs        = deltaTabs;
DialogUserData.activeTabNum     = -1;
DialogUserData.callback         = callback;
DialogUserData.strings          = strings;

%==========================================================================
% 选择默认tab
%==========================================================================
DialogUserData = i_PressTab(hfig, DialogUserData, default_page);

%==========================================================================
% 存贮 user data.
%==========================================================================
i_SetDialogData(hfig, DialogUserData);

%==========================================================================
% 存贮默认值
%==========================================================================
set(hfig, 'DefaultUicontrolEnable', origDefaultUicontrolEnable);

%==========================================================================
% Function - 按下所选tab                                                    
%==========================================================================
function DialogUserData = i_PressTab(hfig, DialogUserData, pressedTabNum),
figPos = get(hfig, 'position');
figWidth=figPos(3);
figHeight=figPos(4);
posPressedTab = get(DialogUserData.tabs(pressedTabNum), 'position');
posPressedTab(1) = posPressedTab(1)*figWidth - DialogUserData.selectionHoffset;
posPressedTab(3) = posPressedTab(3)*figWidth + DialogUserData.selectionHoffset;
posPressedTab(4) = posPressedTab(4)*figHeight + DialogUserData.selectionVoffset;
t2(1)=posPressedTab(1)/figWidth;                                           
t2(2)=posPressedTab(2);
t2(3)=posPressedTab(3)/figWidth;
t2(4)=posPressedTab(4)/figHeight;
selector=DialogUserData.selector;
color=guidata(selector);    
presstext=get(DialogUserData.tabs(pressedTabNum),'children');               %按下后改变tab颜色
set(DialogUserData.tabs(pressedTabNum), 'unit','norm','position', t2,...
    'back',color.presscolor);
set(presstext,'back',color.presscolor);
set(selector,'back',color.presscolor);




t2=DialogUserData.selectorPos(pressedTabNum,:);                             %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t2(1)=t2(1)/figWidth;
t2(2)=t2(2)/figHeight;
t2(3)=t2(3)/figWidth;
t2(4)=t2(4)/figHeight;
set(DialogUserData.selector, ...
  'unit','norm','position',          t2 ...                                 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
);

DialogUserData.activeTabNum = pressedTabNum;


%==========================================================================
% Function - 取消tab按下                                    
%==========================================================================
function i_UnPressTab(hTab, nTab, DialogUserData),

figPos = get(gcf, 'Position');                                               %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figWidth=figPos(3);
figHeight=figPos(4);
                                                                             %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
posTab = get(DialogUserData.tabs(nTab), 'Position');
posTab(1)=posTab(1)*figWidth;
posTab(3)=posTab(3)*figWidth;
posTab(4)=posTab(4)*figHeight;
posTab(1) = posTab(1) + DialogUserData.selectionHoffset;
posTab(3) = posTab(3) - DialogUserData.selectionHoffset;
posTab(4) = posTab(4) - DialogUserData.selectionVoffset;
posTab1(1)=posTab(1)/figWidth;
posTab1(2)=posTab(2);
posTab1(3)=posTab(3)/figWidth;
posTab1(4)=posTab(4)/figHeight;
selector=DialogUserData.selector;
color=guidata(selector);   
set(DialogUserData.tabs(nTab), 'unit','norm','Position', posTab1,...
    'back',color.unpresscolor);
set(get(DialogUserData.tabs(nTab),'children'),'back',color.unpresscolor);  %取消按下时tab的颜色


%==========================================================================
% Function - 处理tab按下                                                    
%==========================================================================
function [DialogUserData, bModified] = ...
  i_ProcessTabPress(hfig, DialogUserData, string, pressedTabNum),

%==========================================================================
% 初始化
%==========================================================================
bModified = 0;

tabs         = DialogUserData.tabs;
activeTabNum = DialogUserData.activeTabNum;

if pressedTabNum == activeTabNum,
  return;
end

i_UnPressTab(tabs(activeTabNum), activeTabNum, DialogUserData);
DialogUserData = i_PressTab(hfig, DialogUserData, pressedTabNum);
bModified = 1;


%==========================================================================
% Function - 确定tab的宽                                        
%==========================================================================
function tabdims = i_DetermineTabDims(strings, font),

%==========================================================================
% 变量检查
%==========================================================================
if nargin == 1,
  fontsize = get(0, 'DefaultUicontrolFontSize');
  fontname = get(0, 'DefaultUicontrolFontName');
else
  fontsize = font{2};
  fontname = font{1};
end

%==========================================================================
% 创建图形
%==========================================================================
hfig  = figure('Visible', 'off');
hText = uicontrol('Style', 'text', 'FontWeight', 'bold');

tabdims{1} = zeros(length(strings), 1);
for i=1:length(strings),
  set(hText, 'String', strings{i});
  ext = get(hText, 'Extent');
  tabdims{1}(i) = ext(3) + 4;
end  

tabdims{2} = ext(4) + 2;

delete(hfig);


%==========================================================================
% 改变图形大小
%==========================================================================
function figresize                                                         
selector=findobj(gcf,'tag','selector');
Pos0=get(selector,'userdata');
Pos1=get(gcf,'position');
set(selector,'userdata',Pos1); 
if isempty(Pos0)
    return
end
wid0=Pos0(3);hig0=Pos0(4);
wid1=Pos1(3);hig1=Pos1(4);
sca1=wid1/wid0;
sca2=hig1/hig0;
dataContainer = findobj(gcf,...
  'Type',       'uicontrol', ...
  'Style',      'text', ...
  'Tag',        'TMWDlgDat@#' ...
);
data=get(dataContainer, 'UserData');
data.selectorPos(:,1)=data.selectorPos(:,1)*sca1;
data.selectorPos(:,2)=data.selectorPos(:,2)*sca2;
data.selectorPos(:,3)=data.selectorPos(:,3)*sca1;
data.selectorPos(:,4)=data.selectorPos(:,4)*sca2;
data.selectionHoffset=data.selectionHoffset*sca1;
data.selectionVoffset=data.selectionVoffset*sca2;
data.leftBevelOffset=data.leftBevelOffset*sca1;
data.rightBevelOffset=data.rightBevelOffset*sca2;
set(dataContainer,'userdata',data);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -