How to find parent uifigure for a child several layers down
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I want to call uiconfirm from a uilistbox's ValueChangedFcn. uiconfirm requires a uifigure as its first argument, but the uilistbox is several layers down from the parent uifigure. These layers consist of custom components (built from matlab.ui.componentcontainer.ComponentContainer) and uigridlayouts. Is there a builtin way to find the handle to the parent uifigure? I want to avoid having to pass the figure handle down through each layer. I'm sure that this question has been asked and answered before, but I've been unable to find the solution
Thanks times a million,
Bill
0 Kommentare
Akzeptierte Antwort
Steven Lord
am 23 Sep. 2022
Use ancestor.
>> f = uifigure;
>> h = uipanel('parent', f);
>> f2 = ancestor(h, 'matlab.ui.Figure');
>> f == f2
ans =
logical
1
Weitere Antworten (1)
dpb
am 23 Sep. 2022
" I want to avoid having to pass the figure handle down through each layer."
In an app, data are all global anyway, so save the uifigure handle on startup/creation and use the saved variable value/handle instead.
3 Kommentare
dpb
am 23 Sep. 2022
Bearbeitet: dpb
am 23 Sep. 2022
The app struct is global, yes...otherwise you wouldn't have access to all its members from any function.
@Steven Lord's solution is better coding practice, though, agreed -- I've never run across ancestor in 30+ years w/ MATLAB, either...as you say, it certainly is not well cross-linked into the documentation to make one aware of it. It isn't in the "See Also" list with findobj although findobj is linked to in ancestor. It is in the "Functions" list for findobj although didn't make the hit parade...
Siehe auch
Kategorien
Mehr zu Develop uifigure-Based Apps finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!