Can you create GUI Elements as an array? (Avoiding eval)
조회 수: 1 (최근 30일)
이전 댓글 표시
I'm working on a GUI that someone else started. Currently, we have text elements with tags: Section1OK, Section1Error, etc ... , Section2OK, Section2Error, etc ..., all the way up to 16. Because of this, when I want to work on these elements, my loop has to look something like this:
for i = 1:16 eval(['set(handles.Section',num2str(i),'OK,''Visible'',''off'');']) end
Which is annoying to look at.
Is there a way to rename/reorganize these elements so I can loop through them without using eval?
댓글 수: 0
채택된 답변
Walter Roberson
2013년 3월 11일
In particular you could use dynamic field names.
Also as long as the handles themselves continue to be valid, you could put them into an array once, save the array away, and then use it as an array:
handles.sectionhandles = [handles.Section1OK, handles.Section1Error, ....];
guidata(hObject, handles);
and then after that,
set(handles.sectionhandles, 'Visible', 'off');
댓글 수: 0
추가 답변 (1개)
Daniel Shub
2013년 3월 11일
eval(['set(handles.Section',num2str(i),'OK,''Visible'',''off'');'])
with
set(handles.(['Section',num2str(i),'OK']), 'Visible', 'off');
댓글 수: 2
Jan
2013년 3월 11일
I prefer this equivalent code:
set(handles.(sprintf('Section%dOK', i)), 'Visible', 'off');
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!