How to assign a callback to a gui element created at runtime

2 views (last 30 days)
Hi,
In AppDesigner I created an app that creates a slider at runtime:
Tt_end_slider = uislider();
Tt_end_slider.Position = app.emptySlider_2.Position;
Tt_end_slider.Tag='t_end';
Tt_end_slider.UserData=i;
Tt_end_slider.ValueChangedFcn = @(source, event) app.osc_prev_slider_ValueChanged ;
The Callback is defined as follows
% Callback function
function osc_prev_slider_ValueChanged(app, event)
value = event.Source.Value;
[..]
end
Using the slider, I get this error:
Not enough input arguments.
Error in tutorialApp/osc_prev_slider_ValueChanged (line 575)
value = event.Source.Value;
Error in tutorialApp>@(source,event)app.osc_prev_slider_ValueChanged (line 325)
Tt_start_slider(i).ValueChangedFcn = @(source,event)app.osc_prev_slider_ValueChanged ;
I couldn't find how to correctly pass the requested argument to the callback ( I tried with @(source,event) looking at the callbacks assigned using the graphic interface)

Accepted Answer

Cris LaPierre
Cris LaPierre on 27 Aug 2019
Edited: Cris LaPierre on 27 Aug 2019
You're close. I see two errors.
1. "Not enough input arguments" is because you are not passing 2 inputs to your callback function. App Designer automatically passes app, but you need to pass in something for event. Update your ValueChangedFcn to this
Tt_end_slider.ValueChangedFcn = @(source, event) app.osc_prev_slider_ValueChanged(Tt_end_slider);
2. Inside your callback function, you are using incorrect dot notation to get the value of the slider. Remove ".Source".
value = event.Value;
  1 Comment
Ilario Triscari
Ilario Triscari on 28 Aug 2019
Thank you, now it works. However I did not understand the difference between arguments in the first parenthesis and arguments in the second one.

Sign in to comment.

More Answers (0)

Categories

Find more on Develop Apps Using App Designer in Help Center and File Exchange

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!