Dynamically name a TextArea
조회 수: 1 (최근 30일)
이전 댓글 표시
My GUI have 81 TextAreas. The names are indexed, e.g. A1TextArea and A2TextArea.
App.A1TextArea.Value = 1 changes A1TextArea to 1
What is the code to change the Nth TextArea programatically? N is a variable
App.A+'n'+TextArea.Value = 1
댓글 수: 1
Stephen23
2025년 4월 2일
Rather than using pseudo-indices in text, why not use actual indices? Then your task is achieved using basic indexing.
채택된 답변
Walter Roberson
2025년 4월 2일
편집: Walter Roberson
2025년 4월 2일
for n = 1 : 81
App.("A" + n + "TextArea").Value = 1
end
That said, it is better to create an array of text areas instead of naming them each individually. With an array of text boxes you could do
set(App.TextAreas, 'Value', 1)
to set the Value property of all of the TextAreas at the same time.
추가 답변 (1개)
Steven Lord
2025년 4월 2일
While you can access property names dynamically as stated in the "Reference Properties Using Variables" section of this documentation page:
R = RandStream.getGlobalStream;
R.Type % Accessing a property using a name known when the code is written
name = 'Type';
R.(name) % Accessing a property using a name that could vary at run-time
In this case I'd consider using one property that contains an array of handles. With that you can index into an element of the array to access a particular handle.
f = figure(Color = 'r');
textObjectHandles = gobjects(2);
for k = 1:4
textObjectHandles(k) = uicontrol(Style='text', Units='normalized', ...
Position=[0.1 0.2*k 0.5 0.1], String = string(k));
end
textObjectHandles
textbox3 = textObjectHandles(1, 2)
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!