MATLAB Answers

Multiple callbacks to one callback

10 views (last 30 days)
Hi, everyone,
I'm doing an app in the App designer and I got the following problem. I have some components and I need to do some process (always the same) when any of the components value changes. I would like to know if there is a way to put everything together in the same callback. This is something that will help me to avoid repetition of lines in the code.
I'm doing something like
ValueChanged callback in component one
Calculation ComponentOne.Value+ComponentTwo.Value
ValueChanged callback in component two
Calculation ComponentOne.Value+ComponentTwo.Value
What I would like to do is
ValueChanged callback in component one or two
Calculation ComponentOne.Value+ComponentTwo.Value
Thanks in advance

  1 Comment

Mario Malic
Mario Malic on 7 Oct 2020
Write it in a helper function, and in the callback, call the function

Sign in to comment.

Accepted Answer

Mohammad Sami
Mohammad Sami on 8 Oct 2020
You can assign the same function as callback to multiple ui components.
Inside you function you will need to be able to access the properties under app directly.
function CommonValueChanged(app, event)
app.ComponentOne.Value + app.ComponentTwo.Value
end

  5 Comments

Show 2 older comments
Juan Ruiz Osorio
Juan Ruiz Osorio on 8 Oct 2020
Component Three it's a Numeric editfield
But are you saying this?
methods (Access = private)
function CommonValueChanged(app,event)
app.ComponentThree.Value=app.ComponentOne.Value + app.ComponentTwo.Value;
end
end
function ComponentTwoValueChanged(app, event)
CommonValueChanged(app,event);
end
function ComponentTwoValueChanged(app, event)
CommonValueChanged(app,event);
end
That works but I don't want that because there are two callbacks and I just want one common callback. Imagine that you want to do the same for say 15 components , in that case it would be neccesary to write 15 callbacks and I think it's to much code.
Mohammad Sami
Mohammad Sami on 9 Oct 2020
Thats not what I meant.
You can right click on each component on the right hand pane.
For the first component, click add value changed fcn to create a callback. For the second component, Click Select Exisiting Callback and set it to same callback as one.
I have also attached a small demo.
Juan Ruiz Osorio
Juan Ruiz Osorio on 9 Oct 2020
Perfect!. That's exactly what I was looking for,
Thank you,Mohammad.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!