コンポーネント名?が連番のものを、Forで回して処理したい
13 ビュー (過去 30 日間)
古いコメントを表示
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以外でも、上記のことを効率的に処理できる方法あれば、ご教示いただけますと幸いです。
どうぞよろしくお願いいたします。
0 件のコメント
採用された回答
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
2023 年 3 月 10 日
>appの使い方について
上記のオンラインコースでオブジェクト指向プログラミングを学べば、AppDesignerで作成したものが全てappクラス内に作られている事が分かります。
>私の知る限り関数を使う際の引数は使うものしか入れないと思うので違和感があります。。
⇒MATLABはオブジェクト自身も省略せず絶対的に示す文法を採用したのですが、私もちょっと違和感があります。
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!