Replace buttons

Hello,
I have a function which creates buttons in my gui when I load data. The number of buttons depend on the size of the XTickLabels and YTickLabels. If I load some other data I want that the buttons from the first data disappear and are replaced by the new amount of buttons. Don't now how I can remove the buttons and how the function knows if there are buttons or not. Here is the code of the button-creation:
s = size(x,2);
breiteQuadrat = 625/s
for n=1:s
handles.b{n}=uicontrol('Style','PushButton','Units','pixels', 'Position',[125-breiteQuadrat/2-5+breiteQuadrat*n 40 10 10],'Visible','on','Callback',@(obj,event)msgbox(num2str(n),num2str(n)));
end
t = size(y,2);
hoeheQuadrat = 625/t
for n=1:t
handles.c{n}=uicontrol('Style','PushButton','Units','pixels', 'Position',[40 125-hoeheQuadrat/2-5+hoeheQuadrat*n 10 10],'Visible','on','Callback',@(obj,event)msgbox(num2str(n),num2str(n)));
end

 Risposta accettata

Paulo Silva
Paulo Silva il 29 Lug 2011

0 voti

To detect if the buttons are in the figure
all(cellfun(@ishandle,handles.b))
To remove all the buttons
delete(handles.b{:})
Also look at your previous question, if the answer is what you wanted (seems to be) please accept it.

Più risposte (1)

Teresa
Teresa il 29 Lug 2011

0 voti

Thanks for your answer. But another problem is, that the buttons will not be there when i start the gui. they are created when i load a matrix. if i try to delete the buttons first and then create new ones, it did not work at the beginning. I get the error: Reference to non-existent field 'b'.
Do you also have a solution for this problem? Can i ask if b is set? How?

4 Commenti

Paulo Silva
Paulo Silva il 29 Lug 2011
Please use the comments, don't create new answers just to comment.
isfield(handles,'b') %check for the existence of b
all(cellfun(@ishandle,handles.b)) %check if all values in b are handles
Teresa
Teresa il 1 Ago 2011
have another question to this problem. i tried your solution but it didn't work because i made a function by myselve and i don't know how to include it to the other functions of the gui so that it also can use the handles structure etc. i hope its not a stupid question but i do not understand handles, hObject and eventdata. only a little bit
Teresa
Teresa il 1 Ago 2011
sorry, forget the question above, this works. the function deletes the field of b when it exists but it did not remove the buttons from the figure. they are still there
Teresa
Teresa il 1 Ago 2011
Now it works, i've updated the handles structure.
thank you for your help :)

Accedi per commentare.

Categorie

Scopri di più su Interactive Control and Callbacks in Centro assistenza e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by