Bonjour à tous,
En cours de création d'une UI par codage manuel, je cherche à jouer avec la propriété "Visible" de certains de ses composants afin de s'assurer que l'utilisateur progresse bien dans l'ordre attendu par l'outil.
J'en viens donc à chercher à rendre visible des composants (uicontrol,uieditfield etc...) en fonction de quel radiobutton est sélectionné dans mon uibuttongroup UI_bg_MCU.
Je voudrais modifier le code précédent afin qu'il ne rende visible UI_e_files_2 et UI_l_files_4 que lorsque UI_rb_2 est sélectionné (et donc les cache dans les autres cas).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 % MCU sheet UI_e_files_2=uicontrol(UI_p_func,'Style','Popupmenu','String',{'MCU sheet name'},'Position',[0.18*Size_3 0.11*Size_4 0.35*Size_3 0.03*Size_4],'Visible','off'); UI_l_files_4=uilabel(UI_p_func,'Text','MCU sheet :','Position',[0.01*Size_3 0.11*Size_4 0.17*Size_3 0.03*Size_4],'BackgroundColor',"w",'Visible','off'); % MCU characterization UI_bg_MCU = uibuttongroup('Parent',UI_p_func,'Position',[0.01*Size_3 0.15*Size_4 0.325*Size_3 0.08*Size_4],'BackgroundColor',"w",'Visible','on','SelectionChangedFcn',@(src,event) bg_MCU(UI_e_files_2,UI_l_files_4)); UI_rb_1 = uicontrol('Parent',UI_bg_MCU,'Style','radiobutton','String','No MCU characterization','Position',[0.01*Size_3 0.0525*Size_4 0.3*Size_3 0.025*Size_4],'BackgroundColor',"w"); UI_rb_2 = uicontrol('Parent',UI_bg_MCU,'Style','radiobutton','String','MCU characterization','Position',[0.01*Size_3 0.0275*Size_4 0.3*Size_3 0.025*Size_4],'BackgroundColor',"w"); UI_rb_3 = uicontrol('Parent',UI_bg_MCU,'Style','radiobutton','String','MCU model','Position',[0.01*Size_3 0.0025*Size_4 0.3*Size_3 0.025*Size_4],'BackgroundColor',"w"); % MCU sheet selection function bg_MCU(UI_e_files_2,UI_l_files_4) set(UI_e_files_2,'Visible','on') set(UI_l_files_4,'Visible','on') end
Un peu dans cette idée là :
Je ne sais pas trop comment écrire le callback dans UI_bg_MCU ni la fonction en elle même pour ce qui s'agit des arguments.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function bg_MCU(UI_e_files_2,UI_l_files_4) Active_rb=get(UI_bg_MCU,'SelectedObject'); switch Active_rb case 'UI_rb_1' % ... case 'UI_rb_2' set(UI_e_files_2,'Visible','on') set(UI_l_files_4,'Visible','on') case 'UI_rb_3' % ... end
UI_bg_MCU ne peut être passé en argument dans son propre callback
UI_rb_1/2/3 ne sont pas disponibles non plus car créer après la ligne d'appel au callback
Je crois qu'il me faut jouer avec l'équivalent en codage manuel de eventdata (c'est 'event' dans @(src,event) avant le callbakc ?) mais je ne sais pas comment l'inclure dans les paramètres du callback ni de la fonction.
D'avance merci pour votre temps, j'espère que mon message est clair sans être trop brouillon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 % function UI_bg_MCU(hObject,eventdata,handles) % newButton=get(eventdata.NewValue,'tag');
Partager