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 commentaire

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

Connectez-vous pour commenter.

 Réponse acceptée

Mohammad Sami
Mohammad Sami le 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 commentaires

Hi Mohammad, I created a Third component to prove your solution but it doesn't changes the value in ComponentThree.
methods (Access = private)
function CommonValueChanged(app,event)
app.ComponentThree.Value=app.ComponentOne.Value + app.ComponentTwo.Value;
end
end
I don't know what is missing or maybe I misunderstood your solution.
Mohammad Sami
Mohammad Sami le 8 Oct 2020
What is the type of component three ? Also just to verify the callback for component one and two are set to CommonValueChanged ?
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 le 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 le 9 Oct 2020
Perfect!. That's exactly what I was looking for,
Thank you,Mohammad.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Develop Apps Using App Designer 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!

Translated by