コンポーネント名?が​連番のものを、For​で回して処理したい

조회 수: 6 (최근 30일)
mayu
mayu 2023년 3월 9일
댓글: mayu 2023년 3월 10일
App Designerを使っていまして、コンポーネント名?が連番のボタンを複数設置しており、一括でEnable処理をしたいと思っています。
連番なのでforでまとめて処理できないかなと思い、以下のように書いてみましたがうまくいきませんでした。
Button_05 ~ Button_25
for i = 5:25
app.(Button_0 + i).Enable = 'on';
end
「+」がダメなのかなと思って「&」とかに変えてみたものの、うまくいきませんでした。
関数または変数 'Button_0' が認識されません。
app.Button_05.Enable = 'on';
app.Button_06.Enable = 'on';
app.Button_07.Enable = 'on';
app.Button_08.Enable = 'on';
・・・
のようにずらずら書きたくないです。
名前がバラバラだったら諦めて書くのですが、連番だったら効率化できるんじゃないかと思い質問させていただきました。
どのようになおしたら上記のことが実現可能になるか、for以外でも、上記のことを効率的に処理できる方法あれば、ご教示いただけますと幸いです。
どうぞよろしくお願いいたします。

채택된 답변

Atsushi Ueno
Atsushi Ueno 2023년 3월 9일
편집: Atsushi Ueno 2023년 3월 9일
"Button_0"の様にString型にすれば、エラー無く期待通りに動きます。(古いリリースでは構造体のフィールドにString型が認められなかった為コメントの様にchar型を使う必要がありますが、新しいリリースではString型でも問題ありません)
for文のイテレータに"i"を使うと、iの中身(数値)がString型に変換される際に複素数(0+1i)と認識される可能性があります。他の変数名に変更する事をお勧めします。
for k = 5:25
app.("Button_0" + k).Enable = "on";
end
  댓글 수: 7
Atsushi Ueno
Atsushi Ueno 2023년 3월 10일
>appの使い方について
上記のオンラインコースでオブジェクト指向プログラミングを学べば、AppDesignerで作成したものが全てappクラス内に作られている事が分かります。
>私の知る限り関数を使う際の引数は使うものしか入れないと思うので違和感があります。。
⇒MATLABはオブジェクト自身も省略せず絶対的に示す文法を採用したのですが、私もちょっと違和感があります。
mayu
mayu 2023년 3월 10일
ありがとうございます!
オブジェクト指向についても何回も調べていろんな説明読んでもよくわからないのですが、その点意識しながらオンラインコースを周回してみようと思います('_';)
お忙しい中、度々丁寧にご教示いただき、ありがとうございましたm(__)m

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 GUIDE アプリの移行에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!