www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@multiinput/multiinput.m
function out = multiinput(figH,types,strings,values,callbacks,varargin) %function obj = MultiInput(FigureHandle , inputtypes , inputstrings , inputvalues , callbacks) %function obj = MultiInput(FigureHandle , controls) % %A vector input control which will sit inside a thingy. % Copyright 2000-2013 The MathWorks, Inc. and Ford Global Technologies, Inc. if ~isgraphics(figH, 'figure') error(message('mbc:multiinput:InvalidArgument')); end obj = struct('objects' , [] ,... 'colsizes',[]); if length(types)>1 && ~ischar(types{1}) controls = types; else controls = {}; for i = 1:length(types) switch lower(types{i}) case 'textinput' controls{i} = xregtextinput(figH, 'varname' , strings{i}); if ~isempty(values{i}) set(controls{i},'BackgroundColor',values{i}); end case 'stepinput' controls{i} = xregstepinput(figH, strings{i}, values{i}{1}, values{i}{2} , callbacks{i}); case 'popupinput' controls{i} = popupinput(figH, strings{i}, values{i}, callbacks{i}); case 'popupnotext' controls{i} = popupinput(figH, '', values{i}, callbacks{i},'split',0); case 'vectorinput' controls{i} = xregvectorinput(figH, strings{i}, values{i}, callbacks{i}); case 'editinput' controls{i} = xregvectorinput(figH, '', values{i}, callbacks{i}, 'visible','edit','split',0); case 'pushbutton' controls{i} = uicontrol('Style' , 'pushbutton' , ... 'Parent' , figH , ... 'Position', [0 0 20 20],... 'Visible','off',... 'TooltipString' , strings{i} , ... 'Callback' , callbacks{i}); if isnumeric(values{i}) set(controls{i},'CData' , values{i}); elseif ischar(values{i}) set(controls{i},'String',values{i}); end case 'checkbox' if iscell(values{i}) val = values{i}{1}; if values{i}{2} enable = 'on'; else enable = 'off'; end else val = values{i}; enable = 'on'; end controls{i} = uicontrol('Style' , 'checkbox' , ... 'Parent' , figH , ... 'Position', [0 0 20 20],... 'Visible','off',... 'Value' , val, ... 'Enable',enable,... 'String' , strings{i} , ... 'Callback' , callbacks{i}); case '' controls{i} = []; otherwise error(message('mbc:multiinput:InvalidArgument1')); end end end obj.objects = controls; obj.colsize = repmat(-1,1,length(types)); obj.gapx = 5; out = class(obj , 'multiinput'); if nargin > 5 out = set(out , varargin{:}); end