2010-05-09 155 views
0

我有兩組按鈕組。 第一個按鈕組有兩個單選按鈕,第二個組有四個單選按鈕。 如果在group1中選擇了按鈕1,而在組2中選擇了任何一個。對於group1中的button2和group2中的任何一個,類似的功能調用必須通過單擊帶有這些組合的按鈕進行。怎麼做。將有8個獨立的函數調用各自的組合。如何做按鈕組合。開關的情況下,如果其他語句沒有工作?善意幫助。單選按鈕組matlab

回答

1

這是一個想法。

首先你創建你的函數的2x4單元陣列。

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

然後,對於組中的每個單選按鈕做switch case並返回一個索引(比如說爲fcn_index1第一組,和fcn_index2爲第二組),該按鈕來選擇。

然後你可以從你的陣列調用一個函數與指數:

fcn_array{fcn_index1,fcn_index2}(arguments) 
0

開關和的if..else當然應該工作了,但是你需要嵌套它們,也就是說,沒有辦法上的開關值對。

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

不是最大的風格,但如果它們都使用相同的參數,那麼你可以使用基於選擇的按鈕(使用的sprintf和「SelectedObject」字段動態構建與eval函數調用脫身的無線電組和標籤,如:eval(sprintf('func%s%s(args)',get(get(handles.group1,'SelectedObject'),'Tag'),get(get(handles.group2,'SelectedObject'),'Tag'))

(能使用find(get(handles.group1,'Children')==get(handles.group2,'SelectedObject')) 索引兒童並注意到其組合是)