2016-07-12 5 views
0

드롭 다운 메뉴를 사용하여 Matlab에서 uitable을 만들 수 있습니다. 가 어떻게 든 드롭 다운 메뉴가드롭 다운 메뉴가있는 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 제안으로 코드를 편집했다. 확인란 중 하나를 선택하면 해당 드롭 다운 메뉴에서 그룹 값을 표시하고 다른 드롭 다운 메뉴는 변경되지 않은 상태로 유지해야합니다. – sssc

+0

'config_data'가 아닌'if' 블록에서'config_format'을 왜 수정하고 있습니까? 왜 ''ColumnFormat ''을 수정하고 있습니까? – excaza

답변

0

힌트 excaza 주셔서 감사합니다. 이것을 구현했습니다. 그러나 id_group_1은 이제 행 중 하나에 3x3 문자 배열로 구성됩니다.

[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 
관련 문제