duplicate tab:how know reference object?
이 질문을 팔로우합니다.
- 팔로우하는 게시물 피드에서 업데이트를 확인할 수 있습니다.
- 정보 수신 기본 설정에 따라 이메일을 받을 수 있습니다.
오류 발생
페이지가 변경되었기 때문에 동작을 완료할 수 없습니다. 업데이트된 상태를 보려면 페이지를 다시 불러오십시오.
이전 댓글 표시
0 개 추천
obj = allchild(app.Tab_X);
newtab = uitab(app.TabGroup,'Title',"XX"); % Create a new tab with the same title
copyobj(obj,newtab);
but what is the reference this object?
I don't think they have the same name as the original' ...

example: in this example i duplicate chart in other tab..but how can i know the referenze this Axis?
댓글 수: 1
i find this solution:
h=findobj(newtab)
h =
9×1 graphics array:
Tab (CL)
GridLayout
UIAxes (Equity)
UIAxes (Equity)
UIAxes (Equity)
UIAxes (Equity)
Label (gg Vis)
NumericEditField (250)
Button (DRAW)
h(3) is the reference axis
or esist better method to catch it?
채택된 답변
Voss
2023년 10월 23일
Better than findobj() is to capture the output from copyobj():
new_obj = copyobj(obj,newtab);
댓글 수: 12
ok but if i wnt to catch reference to axis (in my example is h(3)
how can i do it?
this is your new_obj..(is tab in the pics)
How can i catch reference of uiaxis? (4 axis)

Do it the same way you would've done it wih the output of findobj() I guess
ax = new_obj(strcmp(get(new_obj,'Type'),'axes'))
piero
2023년 10월 24일
thanks..
last question: How can I distinguish 2 objects that are called the same?
Example: uinumericeditfield ..(there are two)

That's a good question. The best way would be to create each object individually, rather than using copyobj to copy everything in the tab, storing the new objects as appropriately-named app properties (perhaps appending each to an array of similar objects).
For example:
% suppose you have an array of editfields already created, called app.editfields
% copy the first one to newtab:
app.editfields(end+1) = copyobj(app.editfields(1), newtab);
Similarly for any other object you want to copy and keep track of.
piero
2023년 10월 24일
thank
Voss
2023년 10월 24일
yw
it's so difficult :((
newtab = uitab(app.TabGroup_Instrum,'Title',cat(i)); % Create a new tab with the same title
copyobj(obj,newtab);
ef = uieditfield(newtab,"numeric")
ef.Value=30;
copyobj(ef, newtab);
h=findobj(newtab);
h
end

two problem :
1) it didn't replace the editfields but added others
2)it added 2 for me even though I only added 1
You created two edit fields in newtab
% create an edit field in newtab:
ef = uieditfield(newtab,"numeric")
% copy that ef to newtab:
copyobj(ef, newtab);
Voss
2023년 10월 24일
The solution, as I said, is not to use findobj() but to store things in a methodical fashion.
If you're going to use copyobj(), then capture its output, as I showed before.
hi,,,,, I have another small obstacle
i've selected "Fdax" tab.....i press "DRAW"...how can i call a function with callback method? ..
If I were in "aggregate" it would call the "callback" function and the problem would not exist
the variable :bb(n) is the arrayreference of the 6 button "Draw"

So you have 6 Draw buttons and you need to make each one do something different, is that right?
(Option 1) When you create each Draw button (e.g., by copyobj) set the new button's callback to an appropriate function.
(Option 2) Alternatively, have each Draw button execute the same callback and figure out what to do inside that callback, based on which tab contains the Draw button whose callback is currently executing.
Option 1:
newobj = copyobj(allchild(tab),newtab);
newdrawbutton = % figure out which element of newobj is the new Draw button
switch newtab
case app.FDAXtab % handle to a tab
newdrawbutton.ButtonPushedFcn = @callback_for_FDAX_draw;
case app.Aggregatetab % handle to another tab
newdrawbutton.ButtonPushedFcn = @callback_for_Aggregate_draw;
case % etc.
% ...
end
Option 2:
function draw_button_callback(app,evt)
switch get(gcbo,'Parent')
case app.FDAXtab % handle to a tab
% code for what should be done when Draw button
% in FDAX tab is pushed goes here
case app.Aggregatetab % handle to another tab
% code for what should be done when Draw button
% in Aggregate tab is pushed goes here
case % etc.
% ...
end
end
piero
2023년 10월 25일
thx
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Code Execution에 대해 자세히 알아보기
참고 항목
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
