2014-01-04 5 views
0

Пожалуйста, я создал gui с двумя кнопками; один для показа полезных, а другой для скрытия полезных. Моя проблема в том, что кнопка «Скрыть» не позволяет отключить видимость. Код, который у меня есть, показан ниже. Любая помощь, почему это не работает? Спасибо.Matlab Uitable On/Off

function []=hide() 
SCR = get(0,'Screensize'); % Get screensize. 
S.fh = figure('color',[0.8 0.8 0.8],'numbertitle','off',... 
      'units','pixels',... 
      'position',[SCR(3)/2-500 ,300 , 650, 600],... 
      'name','myTable',... 
      'resize','on'); 
movegui(S.fh,'center'); 

S.pb(1)=uicontrol('style','push','units','pixels','position',... 
[5 530 150 30],'string','Show Table','fontsize',12,... 
'fontweight','bold'); 
S.pb(2)=uicontrol('style','push','units','pixels','position',... 
[255 530 170 30],'string','Hide Table','fontsize',12,... 
'fontweight','bold'); 
%Callbacks 
set(S.pb(1),'callback',{@pb_call1,S}); 
set(S.pb(2),'callback',{@pb_call2,S}); 

%PushButtons Operation 
function []=pb_call1(varargin) 
S=varargin{3}; 
S.t=uitable('Parent',S.fh,'Data',magic(10)); 
end 

end 

function []=pb_call2(varargin) 
S=varargin{3}; 
S.t=uitable('Parent',S.fh,'Data',magic(10)); 
set(S.t,'visible','off') 
end 

ответ

1

В pb_call2() вы создаете новый uitable, переписав ручку к старому, то скрывающей новый. Чистый результат: старая таблица все еще видна, и теперь у вас нет дескриптора.

Короче говоря, удалить

S.t=uitable('Parent',S.fh,'Data',magic(10)); 

от pb_call2().

Помните, что pb_call1() создает новый uitable каждый раз, когда он вызывается, поэтому вы скоро столкнетесь с вариантом этой же проблемы. Лучше создать таблицу один раз при инициализации и просто включить или отключить свойства обратных вызовов.

+0

Хорошо, я понял. Я благодарен. – user2868118

Смежные вопросы