www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@xregtable/xregtable.m
function hnd = xregtable(varargin) %XREGTABLE Constructor for xregtable object % % TBL = XREGTABLE % TBL = XREGTABLE(FIG) % TBL = XREGTABLE('Property1',Value1,...) % TBL = XREGTABLE(FIG,'Property1',Value1,...) % Copyright 2000-2010 The MathWorks, Inc. and Ford Global Technologies, Inc. % Use given figure handle or current figure by default (creates one if necessary) if nargin>0 && ~ischar(varargin{1}) && ishandle(varargin{1}) hnd.parent = varargin{1}; varargin(1) = []; else hnd.parent = gcf; end % need to know this before making frame fud.position=[50 50 400 400]; fud.units='pixels'; fud.parent=hnd.parent; fud.panel = uipanel('Parent',hnd.parent,... 'BorderType', 'beveledin', ... 'BackgroundColor',get(ancestor(hnd.parent,'figure'),'Color'),... 'Units','pixels'); hnd.panel = fud.panel; hnd.parent = fud.panel; % ** Create frame and slider handles ** hnd.frame.handle=axes(... 'Parent',hnd.panel,... 'Visible', 'off',... 'Units','pixels',... 'Position',fud.position,... 'XTick',[],... 'YTick',[],... 'Box','on',... 'Color',get(0,'DefaultUicontrolBackgroundColor'),... 'XColor',[0 0 0],... 'YColor',[0 0 0],... 'XLim',[0 1],'YLim',[0 1],... 'HandleVisibility','off',... 'HitTest','off'); %Sliders inherit units from object...?? hnd.hslider.handle=uicontrol('Parent', hnd.panel,... 'Style','slider',... 'Visible','off',... 'Units',fud.units,... 'Position',[0 0 1 1],... 'Min',1,... 'Max',2,... 'Value',1); hnd.vslider.handle=uicontrol('Parent', hnd.panel,... 'Style','slider',... 'Visible','off',... 'Units',fud.units,... 'Position',[0 0 1 1],... 'Min', -2,... 'Max',-1,... 'Value',-1); % Diagonal scrolling button hnd.dslider.handle=uicontrol('Parent', hnd.panel,... 'Style','togglebutton',... 'Visible','off',... 'Units',fud.units,... 'Position',[0 0 1 1],... 'Value',0,... 'TooltipString','Enable diagonal scrolling'); % Set up data in frame ud fud.cells.shandles=[]; fud.cells.flefthandles=[]; fud.cells.ftophandles=[]; fud.cells.fcornerhandles=[]; fud.cells.exist=false(0,0); fud.cells.userprops=false(0,0); fud.cells.uiprops={}; fud.userdata=[]; fud.cellchangecb=''; uip.callback=''; % new coded type matrix % types are: % 1 - text % 2 - uitext % 3 - uiedit % 4 - uiradiobutton % 5 - uicheckbox % 6 - uitogglebutton % 7 - uipushbutton % 8 - uislider % 9 - uiframe % 10 - uilistbox % 11 - uipopupmenu % 12 - uiemuedit0 % 13 - uiemuedit1 % fud.cells.ctype=[]; fud.cells.positions=[]; fud.cells.visible={}; fud.cells.value=[]; fud.cells.format={}; fud.cells.string={}; fud.cells.rowselection=[1 0]; fud.cells.colselection=[1 0]; fud.rows.number=0; fud.rows.size=20; fud.rows.fixed=0; fud.rows.spacing=0; fud.rows.autosize=0; fud.rows.autosizenumber=20; fud.rows.autosizeminsize=20; fud.cols.number=0; fud.cols.size=50; fud.cols.fixed=0; fud.cols.spacing=0; fud.cols.autosize=0; fud.cols.autosizenumber=8; fud.cols.autosizeminsize=50; fud.frame.visible='on'; fud.frame.hborder=[2 2]; fud.frame.vborder=[2 2]; fud.frame.handle=hnd.frame.handle; fud.frame.boxcolor=[0 0 0]; fud.visible='on'; fud.defaultcelltype=3; fud.defaultcellformat='%5.3f'; fud.zeroindex=[1 1]; fud.redrawmode=1; fud.colormap=[]; fud.colorintervals=[]; fud.usecolors='off'; fud.vslider.width=17; fud.vslider.visible='off'; fud.vslider.offset=0; % drawing offset from table fud.vslider.callback = []; % Callback to execute when a scroll occurs fud.hslider.width=17; fud.hslider.visible='off'; fud.hslider.offset=0; % drawing offset from table fud.hslider.callback = []; % Callback to execute when a scroll occurs fud.hslider.handle=hnd.hslider.handle; fud.vslider.handle=hnd.vslider.handle; fud.dslider.handle=hnd.dslider.handle; fud.dslider.visible='off'; fud.filters.type='none'; fud.filters.value=0; fud.filters.tol=0; fud.sliders=1; % flag for turning sliders vis/invis permanently % Set up link to frame and initialise slider steps property % for scrolling vslud.parent=hnd.frame.handle; vslud.steps=[]; hslud.parent=hnd.frame.handle; hslud.steps=[]; % Create table object hnd=class(hnd,'xregtable'); % make up new name for hnd carrier frame m=1; n=0; while m n=n+1; current=findobj('Type','axes','Tag',['tablehandle' sprintf('%d',n)]); if isempty(current) m=0; end end fud.objecthandle=axes('Parent',hnd.panel,'Visible','off','Units','pixels',... 'Position',[0 0 1 1],'UserData',hnd,'Tag',['tablehandle' sprintf('%d',n)],... 'HandleVisibility','off'); uip.callback = {@mbcgui.util.legacycallback,@cellcb,fud.objecthandle}; uip.enable = get(mbcgui.hgclassesutil.toNative(hnd.parent),'DefaultUicontrolEnable'); fud.cells.defaultuip = uip; set(hnd.frame.handle,'UserData',fud); set(hnd.vslider.handle,'UserData',vslud,'Callback',... {@mbcgui.util.legacycallback,@vsliderscroll,fud.objecthandle}); set(hnd.hslider.handle,'UserData',hslud,'Callback',... {@mbcgui.util.legacycallback,@hsliderscroll,fud.objecthandle}); % Call set function for any initial properties. This will handle % redraw if necessary. If no arguments, then call redraw from here. if ~isempty(varargin) % Set properties that are passed in set(hnd.frame.handle,'Visible','on'); set(hnd,varargin{:}); else % For no inputs, sliders are not necessary, nor are values set(hnd.frame.handle,'Visible','on'); end