How to steer uiprogressdlg from external function
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Simon Allosserie
le 10 Nov 2022
Commenté : Simon Allosserie
le 14 Nov 2022
Hello
I am building an App wit appdesigner in which a rather complex function is called. The function is at the moment not within the app. Due to its complexity, it is a standalone function file. First of all, its 1500 lines of code would make the app code extremely long. Furthermore, working within the normal matlab interface enables me much more do to optimisations and tests on the function. Within the app it is much more difficult to look at intermediate values etc.
Within the function, I use the waitbar a lot to show progress through all the different calculation steps (as calculations can take multiple hours). Now for the app, I assume it is best to use uiprogressdlg for that purpose. In the end, this app must be deployed standalone to non-Matlab users.
However, I don't seem able to steer the uiprogressdlg from the external function. Is there a way to do this? Or is my only option to integrate the function fully within the app?
0 commentaires
Réponse acceptée
Jiri Hajek
le 10 Nov 2022
Hi, I believe you could use the function setappdata, which allows you to change global variables in your app from an external function:
setappdata(obj,name,val)
5 commentaires
Jiri Hajek
le 11 Nov 2022
Hi Simon, I'm afraid I confused two things yesterday. In fact, you have two alternative possiblities, which I mixed up together - sorry for that. Using the handle of the progress dialog you simply change them same way as if you were inside your app. You may safely forget about the setappdata function, it is unnecessary in your case.
In your app, create a hadle of the progres dialog window, which just needs to be defined as a global property:
properties
MyProgressDlg % handle of your progress dialog
end
...
...
...
MyApp.MyProgressDlg = uiprogressdlg(app, .......);
In your external function, you can directly access the properties of the dialog window:
myFunction(var1, var2, myApp)
...
newProgressValue = 0.1;
newProgressMessage = 'Some text to display.';
MyApp.MyProgressDlg.Value = newProgressValue;
MyApp.MyProgressDlg.Message = newProgressMessage;
...
end
Hope this helps.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Maintain or Transition figure-Based Apps dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!