Vector loop over multiple object handles inside a set function
Afficher commentaires plus anciens
Hi,
following problem: I have an array of struct elements with each containing a handle element (surface object in my case) for which I want to set the Visible property to an equivalent cell array containing 'on' and 'off'.
Here is how I would imagine the code line to look similar with:
set([structWithStuff(:).surfaceHandle], 'Visible', cellArrayWithOnsAndOffs(:));
The code above obviously is faulty. Assuming, this is even possible within MATLAB, what would be an appropriate way to make this work? Or would the more efficient way actually be a simple for loop?
Réponse acceptée
Plus de réponses (1)
Dennis
le 6 Mar 2019
You can use logical indexing. I wrote this earlier today for another question, but it is quite close to what you want to do:
for i=3:-1:1 %creating some graphical elements
h.pb(i)=uicontrol('style','pushbutton','position',[50 50+(40*i) 80 40],'String',sprintf('Button %d',i));
end
set(h.pb(:),'callback',{@MyCallback,h});
function MyCallback(hObj,~,h)
s=[1 0 1]; % matrix with 'on' and 'off', i used 1 and 0, but you can compare strings if you prefer
set(h.pb(s==1),'enable','off'); %set all s==1 to 'off'
pause(3)
set(h.pb(:),'enable','on');
end
Catégories
En savoir plus sur Creating, Deleting, and Querying Graphics Objects dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!