Effacer les filtres
Effacer les filtres

Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

getappdata doesn't capture all handles

1 vue (au cours des 30 derniers jours)
yonatan s
yonatan s le 15 Fév 2018
Clôturé : MATLAB Answer Bot le 20 Août 2021
hi all,
I'm using a uitable in order to mark specific points on another figure (upper left in the attached image).
when I check a box in the "show" column it does mark an x at the figure as I want it to. but when I am unchecking the boxes, only the last x is deleted from the figure. it seems as the getappdata in callback1 function capture only the last handle.
these are the lines by which I define the uitable:
t=uitable(figure(1),'data',uidata,'columnname',titles,'fontsize',15,'ColumnWidth',{100});
subplot(2,2,[2,4]);
ax = gca
ax.Visible = 'off'
pos = get(subplot(2,2,[2,4]),'position');
set(t,'units','normalized');
set(t,'position',pos);
t.ColumnEditable(1)=1;
figure(3);p1=plot(1:3);
setappdata(f1.Parent,'ellipseHandle',p1);
t.CellEditCallback={@(src,eventdata)callback1(src,eventdata,f1,data)};
close(3)
callback1 function:
function callback1(h,eventdata,F,data)
ind=find([h.Data{:,1}]);
eh=getappdata(F(1).Parent,'ellipseHandle'); %ellipse handle
delete(eh);
for i=ind
eh(i)=plotData(F(1),data,ind);
end
setappdata(F(1).Parent,'ellipseHandle',eh);
end
plotData function:
function [h]=plotData(frame,data,i)
for k=1:length(i)
f=find (data(i(k),:)==0,1);
if f>0
p=1:(f-1);
p(1)=data(i(k),1); p(2)=data(i(k),2);
for j=3:2:f-1
p(j)=data(i(k),j);
p(j+1)=data(i(k),j+1);
end
else
p=1:(length(data(i(k),:)));
p(1)=data(i(k),1); p(2)=data(i(k),2);
for j=3:2:size(data,2)-1
p(j)=data(i(k),j);
p(j+1)=data(i(k),j+1);
end
end
hold on
h=plot(frame,p(3:2:end-1),p(4:2:end),'xb');
end
% hold off
end

Réponses (0)

Cette question est clôturée.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by