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

13 visualizaciones (últimos 30 días)
mayu
mayu el 9 de Mzo. de 2023
Comentada: mayu el 10 de Mzo. de 2023
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以外でも、上記のことを効率的に処理できる方法あれば、ご教示いただけますと幸いです。
どうぞよろしくお願いいたします。

Respuesta aceptada

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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre プログラミング en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!