2016-07-12 22 views
0

ドロップダウンメニューでMatlabでuitableを作成しました。 は何とかドロップダウンメニューは、私がもし他の条件付きスイッチ/ケースを代入しようとしたスイッチ/ケースドロップダウンメニューを備えた有益なmatlab

enter image description here

に更新されません。 ドロップダウンメニューが更新されますが、希望の出力が得られません。

は、任意のアイデアやポインタを

enter image description here

以下のコードを実行してくださいシミュレートしますか?

function [] =foouitable() 

f = figure('Position',[100 100 400 150]); 

% Column names and column format 
columnname = {'Available','Options','SubOptions'}; 
columnformat = {'logical','bank',{'CheckBox' 'SelectSubOptions'}}; 

% Define the data 
d = {false 'Reconstruction' 'CheckBox';... 
    false 'Segmentation' 'CheckBox';... 
    false 'ComputerTomography' 'CheckBox';... 
    false, 'UltraSound', 'CheckBox';... 
    false, 'AcousticEmission', 'CheckBox'}; 

% Create the uitable 
t = uitable('Data', d,... 
    'ColumnWidth', {70 120 100},... 
    'ColumnName', columnname,... 
    'ColumnFormat', columnformat,... 
    'ColumnEditable', [true false true],... 
    'RowName',[],... 
    'CellEditCallback',@edit) 

set(t,'Tag','Config_table'); 

     function edit(src,evt) 
      if evt.Indices(2) == 1 
       modifyPopup(src) 
      end 
     end 


    % Set width and height 
    t.Position(3) = t.Extent(3); 
    t.Position(4) = t.Extent(4); 


     function modifyPopup(src) 
      id_group_1 = {'A.1';'A.2';'A.3'}; 
      id_group_2 = {'B.1';'B.2';'B.3'}; 
      id_group_3 = {'C.1';'C.2';'C.3'}; 
      id_group_4 = {'D.1';'D.2';'D.3'}; 
      id_group_5 = {'E.1';'E.2';'E.3'}; 
      id_default = {'CheckBox'}; 

      config_data = get(src,'Data'); 
      selector = config_data(1:5,1); 
      selector = cell2mat(selector); 



      config_format = get(src,'ColumnFormat'); 
      if isequal(selector(1),1) 
       config_format{3} = id_group_1'; 
      elseif isequal(selector(2),1) 
       config_format{3} = id_group_2'; 
       elseif isequal(selector(3),1) 
       config_format{3} = id_group_3'; 
       elseif isequal(selector(4),1) 
       config_format{3} = id_group_4'; 
       elseif isequal(selector(5),1) 
       config_format{3} = id_group_5'; 
      else 
       config_format{3} = id_default; 
      end 

      set(src,'Data',config_data); 
      set(src,'ColumnFormat',config_format); 
     end 
    end 

ありがとうございます!

+0

控えめなコメントを付けずに問題を再現し、希望する出力が何であるか説明してください。 – excaza

+0

私はexcazaのようにコードを編集しました。チェックボックスの1つをチェックすると、対応するドロップダウンメニューにグループ値が表示され、他のドロップダウンメニューは変更されません。 – sssc

+0

'config_data'ではなく' if'ブロックで 'config_format'を修正していますか?なぜ、 '' ColumnFormat ''を変更していますか? – excaza

答えて

0

ヒントexcazaをありがとう。私はそれを実装しました しかし、id_group_1は、その行の1つに3x3のchar配列で構成されています。

[1] 'Reconstruction'  [3x3 char] 
[0] 'Segmentation'   'CheckBox' 
[0] 'ComputerTomography' 'CheckBox' 
[0] 'UltraSound'   'CheckBox' 
[0] 'AcousticEmission'  'CheckBox' 

enter image description here

セットとして(SRC、 'データ'、CONFIG_DATA)。セルアレイは許可されません。現時点ではif/else条件の中でconfig_formatの使用を避けることはできません!

function modifyPopup(src) 
     id_group_1 = {true 'Reconstruction'... 
      ['A.1'; 'A.2'; 'A.3'];... 
      false 'Segmentation' 'CheckBox';... 
      false 'ComputerTomography' 'CheckBox';... 
      false, 'UltraSound', 'CheckBox';... 
      false, 'AcousticEmission', 'CheckBox'}; 

     id_group_2 = {false 'Reconstruction' 'CheckBox';... 
      true 'Segmentation' ['B.1'; 'B.2'; 'B.3'];... 
      false 'ComputerTomography' 'CheckBox';... 
      false, 'UltraSound', 'CheckBox';... 
      false, 'AcousticEmission', 'CheckBox'}; 

     id_group_3 = {false 'Reconstruction' 'CheckBox';... 
      false 'Segmentation' 'CheckBox';... 
      true 'ComputerTomography'... 
      ['C.1'; 'C.2'; 'C.3'];... 
      false, 'UltraSound', 'CheckBox';... 
      false, 'AcousticEmission', 'CheckBox'}; 

     id_group_4 = {false 'Reconstruction' 'CheckBox';... 
      false 'Segmentation' 'CheckBox';... 
      false 'ComputerTomography' 'CheckBox';... 
      true, 'UltraSound',... 
      ['D.1'; 'D.2'; 'D.3'];... 
      false, 'AcousticEmission', 'CheckBox'}; 

     id_group_5 = {false 'Reconstruction' 'CheckBox';... 
      false 'Segmentation' 'CheckBox';... 
      false 'ComputerTomography' 'CheckBox';... 
      false, 'UltraSound', 'CheckBox';... 
      true, 'AcousticEmission', ['E.1'; 'E.2'; 'E.3']}; 

     id_default = d; 
     config_data = get(src,'Data'); 
     selector = config_data(1:5,1); 
     selector = cell2mat(selector); 

     config_format = get(src,'ColumnFormat') 
     if isequal(selector(1),1) 
      config_data = id_group_1; 
     elseif isequal(selector(2),1) 
      config_data = id_group_2; 
     elseif isequal(selector(3),1) 
      config_data = id_group_3; 
     elseif isequal(selector(4),1) 
      config_data = id_group_4; 
     elseif isequal(selector(5),1) 
      config_data = id_group_5; 
     else 
      config_data = id_default; 
     end 
     %set(src,'ColumnFormat', config_format) 
     set(src,'Data',config_data); 

    end 
    end 
関連する問題