2017-09-22 5 views
0

문자 벡터 콜백을 함수 핸들로 변환하려고합니다. 그러나 익명 함수를 사용하여 셀 배열을 만들 수 있다고 가정하는 다중 콜백을 호출하고 있습니까?MATLAB GUI에서 다중 콜백

guiel.hPB(2)=uicontrol(guiel.cPanel(2),'Style','PushButton','Units','pixels',... 
     'TooltipString',guiel.plotTt,... 
     'Position',[cnst.bhspace 3*cnst.bvspace+2*cnst.bheight cnst.bwidth cnst.bheight],... 
     'String','Run Simulation','fontsize',10,'FontWeight','Demi',... 
     'CallBack','eval(codeblk.CLOSE_MDL_FCN); set(guiel.cPanel(4),''Visible'',''off'');set(guiel.APPWINDOW,''Resize'',''off''); primePlot;',... 
     'Enable','off'); 

내가 뭘하려고 오전 함수 핸들과 익명 함수 핸들 될 수있는 나머지에 codeblk.CLOSE_MDL_FCN을 작성하는 것입니다 : 여기

코드인가? 그러나, 어떻게 할 수 있는지 잘 모르겠습니다.

codeblk.CLOSE_MDL_FCN = ['if ~isempty(find_system(''Name'',vars.simfilename))'... 
        'vars.simtime = str2num(get_param(vars.simfilename,''StopTime''));'... 
        'set(guiel.hSimtime,''String'',num2str(vars.simtime));'... 
        'save_system(vars.simfilename);'... 
        'close_system(vars.simfilename);'... 
        'end']; 

답변

1

생각하면 creating a callbackfunction handle이 그 GUI 개체가 상호 작용하는 경우에 대한 모든 것을 처리 할 수있는 하나의 기능 때문이다 사용. cell array callback을 사용하면 여러 함수를 호출하는 것이 아니라 함수에 추가 데이터를 전달해야 할 때 유용합니다. 여기에 당신이 당신의 버튼 콜백 설계 제안 방법은 다음과 같습니다

guiel.hPB(2) = uicontrol(..., 'CallBack', @callback_hPB2, ...); 

을 그리고 당신은 다음 정의 할 두 nested functions :

function callback_hPB2(~, ~) 
    close_fcn(); 
    set(guiel.cPanel(4), 'Visible', 'off'); 
    set(guiel.APPWINDOW, 'Resize', 'off'); 
    primePlot(); 
end 

function close_fcn 
    if ~isempty(find_system('Name', vars.simfilename)) 
    vars.simtime = str2num(get_param(vars.simfilename, 'StopTime')); 
    set(guiel.hSimtime, 'String', num2str(vars.simtime)); 
    save_system(vars.simfilename); 
    close_system(vars.simfilename); 
    end 
end