2010-05-09 6 views
0

J'ai deux groupes de boutons. Le premier groupe de boutons a deux boutons radio et le deuxième groupe a quatre boutons radio. si le bouton 1 est sélectionné dans le groupe 1 et l'un dans le groupe 2. de même pour le bouton 2 dans le groupe 1 et l'autre dans le groupe 2, les appels de fonction respectifs doivent être effectués en cliquant sur ces combinaisons. comment faire. il y aura 8 appels de fonction distincts pour leurs combinaisons respectives. comment faire la combinaison de groupes de boutons. changer de cas ou si autre déclaration n'a pas fonctionné ?? aide aimablement.groupe de boutons radio matlab

Répondre

1

Voici une idée.

D'abord, vous créez une matrice 2x4 cellules de vos fonctions.

fnc_array = {fcn11, fcn12, fcn13, fcn14; fcn21, fcn22, fcn23, fcn24}; 

ensuite faire switch case pour chaque bouton radio dans un groupe et le retour d'un index (par exemple fcn_index1 pour le 1er groupe et fcn_index2 pour le 2ème groupe), qui touche sélectionné.

Ensuite, vous pouvez appeler une fonction de votre tableau avec ces indices:

fcn_array{fcn_index1,fcn_index2}(arguments) 
0

Switch et if..else devrait certainement travailler, mais vous devez imbriquer, autrement dit, il n'y a aucun moyen d'allumer un paire de valeurs.

switch valA 
    case 1 
     if isB 
      out = fcn11(args{:}); 
     else 
      out = fcn12(args{:}); 
     end 
    case 2 
     if isB 
      out = fcn21(args{:}); 
     else 
      out = fcn22(args{:}); 
     end 
    case 3 
     if isB 
      out = fcn31(args{:}); 
     else 
      out = fcn32(args{:}); 
     end 
    case 4 
     if isB 
      out = fcn41(args{:}); 
     else 
      out = fcn42(args{:}); 
     end 
end 
0

Pas le plus grand style, mais s'ils utilisent tous les mêmes arguments, alors vous pourriez sortir avec la construction de manière dynamique l'appel avec la fonction eval basée sur les boutons ont été sélectionnés (en utilisant sprintf et le champ « selectedObject » des groupes de radio et une étiquette telle que: eval(sprintf('func%s%s(args)',get(get(handles.group1,'SelectedObject'),'Tag'),get(get(handles.group2,'SelectedObject'),'Tag')))

(peut être combiné avec l'indexation des enfants en utilisant find(get(handles.group1,'Children')==get(handles.group2,'SelectedObject')) et prenant note de ce qui est qui)