码迷,mamicode.com
首页 > 其他好文 > 详细

在不同gui 中传递数据的完美解决方法

时间:2015-01-09 21:01:51      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

刚刚自己遇到一个传递参数的问题,研究了一把,感觉效果还不错,贡献给论坛的兄弟们。

方法一:直接带参数传递,
   用途:用于主窗口打开一个子窗口时传递信息。

例子:主窗口(main) 中点击按钮后打开一个新窗口(ShowSQL)显示当前的sql 语句
 
   主窗口代码(main):
       ShowSQL({sqlstr},{‘SQL Statement‘});  

   子窗口代码(ShowSQL):
       function ShowSQL_OpeningFcn(hObject, eventdata, handles, varargin)
       handles.output = hObject;
       handles.str = varargin{1}; % <-- 就是{sqlstr}
       handles.title = varargin{2}; % <--就是{‘SQL Statement‘}


方法二:任意窗口间的参数传递,
   用途:如果子窗口也想回传一些参数给主窗口,或者修改主窗口的一些参数,需要利用hObject 和handles 的传递来达成目标
例子:主窗口(main)打开一个子窗口(config)允许选择当前的使用的数据库连接

   主窗口代码(main):
     主窗口原有的一个handles.conn 保存数据库连接配置。
     希望通过子窗口来设置选择不同的数据库
     function setup_uipushtool_ClickedCallback(hObject, eventdata, handles)
        config(hObject,handles);

   子窗口代码(config):
    function config_OpeningFcn(hObject, eventdata, handles, varargin)
    handles.output = hObject;
    handles.obj = varargin{1}; %获得对象指针
    hdl = varargin{2};
    handles.handle = hdl;   %获得句柄列表
    % Update handles structure
    guidata(hObject, handles);

  function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)
    switch get(hObject,‘Tag‘)   % Get Tag of selected object
           case ‘db1_radio‘
                handles.handle.conn = database(‘db1‘,‘‘,‘‘); %修改主窗口的数据库配置参数
                     case ‘db2_radio‘        
                          handles.handle.conn = database(‘db2‘,‘‘,‘‘);     
                     case ‘db3_radio‘
                          handles.handle.conn = database(‘db3‘,‘‘,‘‘);  
           otherwise
      end
             guidata(handles.obj, handles.handle); %保存修改,很重要,否则修改就不成功了
             set(handles.handle.status_text,‘String‘,handles.handle.conn.Instance);
               %顺便把主窗口的文本状态框也修改了。
     

在不同gui 中传递数据的完美解决方法

标签:

原文地址:http://blog.csdn.net/u012374012/article/details/42559259

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!