www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@xregstepinput/typeText.m

    function typeText(obj)
%TYPETEXT

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



str = get(obj.edit , 'String');
d = get(obj.edit , 'UserData');

if isempty(str)
   set(obj.edit , 'String' , d.currstr);
else
   num = str2num(str);
   if isempty(num)
      w = evalin('base' , 'whos');
      names = {w.name};
      ind = find( strcmp( str,names ) );
      
      if ~isempty(ind)
         name = names{ind};
         num = evalin('base' , name);
         if ~isnumeric(num) || isscalar(num) || num < d.range(1) || num > d.range(end)
            set(obj.edit , 'String' , d.currstr);
         else
            [~,i]=min(abs(d.range-num));
            d.index = i(end);
            if d.index == 1
               set(obj.leftbutton , 'Enable' , 'off' , 'CData' , d.LeftDis);
            else
               set(obj.leftbutton , 'Enable' , 'on' , 'CData' , d.LeftEn);
            end
            if d.index == length(d.range)
               set(obj.rightbutton , 'Enable' , 'off' , 'CData' , d.RightDis);
            else
               set(obj.rightbutton , 'Enable' , 'on' , 'CData' , d.RightEn);
            end
            d.currstr = str;
            set(obj.edit , 'UserData' , d);
            xregcallback(d.callback)
            return;
         end
      else
         set(obj.edit , 'String' , d.currstr);
      end
   elseif isscalar(num)  && num >= d.range(1) && num <= d.range(end)
      [~,i]=min(abs(d.range-num));
      d.index = i(end);
      if d.index == 1
         set(obj.leftbutton , 'Enable' , 'off' , 'CData' , d.LeftDis);
      else
         set(obj.leftbutton , 'Enable' , 'on' , 'CData' , d.LeftEn);
      end
      if d.index == length(d.range)
         set(obj.rightbutton , 'Enable' , 'off' , 'CData' , d.RightDis);
      else
         set(obj.rightbutton , 'Enable' , 'on' , 'CData' , d.RightEn);
      end
      d.currstr = str;
      set(obj.edit , 'UserData' , d);
      xregcallback(d.callback)
      return;
   else
      set(obj.edit , 'String' , d.currstr);
   end
end