コールバック関数に、​クリックするたびにそ​のクリック回数を渡す​方法を教えてください​。

11 ビュー (過去 30 日間)
高木 範明
高木 範明 2023 年 10 月 23 日
コメント済み: 高木 範明 2023 年 10 月 24 日
例えば、次のようなクリックの都度、コールバック関数を呼ぶルーチンがあった場合、
クリックの回数(何回目)をコールバック関数に渡す方法をおしえていただけないでしょうか?
この例だと、click=10しか渡すことができませんが、これを1,2,3,・・・とクリックの度にカウントアップできないでしょうか?
【メイン】
Ia_start = 1;
Ia_incre = 1;
Ia_end = 5;
Counter = 0;
click = 10;
for Ia = Ia_start : Ia_incre : Ia_end
Counter = Counter + 1;
fp(Counter) = fimplicit(app.UIAxes,@(id,iq) id.^2+iq.^2 - Ia.^2);
set(fp(Counter), 'ButtonDownFcn',@(src, event) lineCallback(app,src,event,click);
end
【コールバック】
methods (Access = private)
function lineCallback(app,src,event,click)
  4 件のコメント
高木 範明
高木 範明 2023 年 10 月 23 日
早々のご教示をありがとうございます。
holdについては、転記忘れで申し訳ありません。追記いたしました。
複数の円(今回は5つですが実際は20以上)のいろいろな点をクリックして
その座標(数十点)をUITableに書き出すことを考えています。
現在、座標はうまく書き出せていますが、
その時に、何回目のクリックであるかもUITableに記録したいのです。
これからご教示頂いたページをこれから熟読いたしますが、クリック(コールバックの呼び出し回数)
のカウントのやり方がよくわからず、質問した次第です。
【メイン】
Ia_start = 1;
Ia_incre = 1;
Ia_end = 5;
Counter = 0;
click = 10;
hold(app.UIAxes,'on');
for Ia = Ia_start : Ia_incre : Ia_end
Counter = Counter + 1;
fp(Counter) = fimplicit(app.UIAxes,@(id,iq) id.^2+iq.^2 - Ia.^2);
set(fp(Counter), 'ButtonDownFcn',@(src, event) lineCallback(app,src,event,click);
end
hold(app.UIAxes,'off');
高木 範明
高木 範明 2023 年 10 月 24 日
本件、自己解決しました。
グローバル変数(例えば変数click)を定義して、コールバック呼び出し側で、app.click=0とし、
コールバック側で、app.click=app.click+1にすれば、カウントアップできました。
MATLABのグローバル変数の扱い方がまだよくわかっておらず、的外れな質問になったことを
お詫びいたします。

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File Exchange対話型コントロールとコールバック についてさらに検索

製品


リリース

R2023a

Community Treasure Hunt

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

Start Hunting!