LoginSignup
mura23go
@mura23go (Smbc 村上)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

PowerApps ボタンのonselect で他のボタンの .Text を変更したい。

PowerApps

コントロール制御の問題です。

解決したいこと

PowerApps で「座席表」のアプリを作成しています。
PowerApps でボタンを押したら、他のボタン(ボタン名 btn1 とする)の Text を変更したいです。ボタン名は、ギャラリーのある列(today_alloc)にテキストとして入っています。
ギャラリーの dataverse のカラムがコントロール型を使えないので、解決方法が見つかりません。よろしくお願いします。

自分で試したこと

変更したいボタン名が分かっているとき(例ボタン名:loc3)のとき、変更したい値に変えることはできました。「変更したいボタン名」をテキスト型変数で指定してもうまくいかないです。

解決方法

解決方法を提案頂けるでしょうか。

0

1Answer

変更したいボタン名が分かっているとき(例ボタン名:loc3)のとき、変更したい値に変えることはできました。「変更したいボタン名」をテキスト型変数で指定してもうまくいかないです。

これは、「変更したいボタン名」が動的に決まるという意味でしょうか?
何個もボタンがあっても、名前が固定で、押すボタンと変更したいボタンの関係が固定であれば、名前を変数で持つ必要は無いと思います。

N個の押すボタンと、M個の変更したいボタン があったとき、『N_x が M_y を変更する規則』が知りたいです。

0

Comments

  1. @mura23go

    Questioner

    説明不足で失礼しました。ご指摘ありがとうございます。
    座席ボタン(各名前:alloc1 ~ alloc100)が、あり座席ボタンを押すと、その座席の初期テキスト(alloc1 なら 変数 alloc1="SE1" など)は、App OnStart で決めています。"出社”時にギャラリーから自分の名前を選んで(Gallery1.selected 状態)、座る座席ボタン(alloc1など)を押し、1個だけある”登録”ボタンを押すと、ギャラリーの自分の座席カラムに"SE1"が入り、座る座席ボタンの表示(alloc1.Text)が自分の名前(村上)になる、という動作です。

  2. 以下の動きで合っているでしょうか?

    req.gif

    以下を行っています。

    1. Screen1のOnVisibleに、押された座席ボタンを保持する変数(Btn_ctrl)と、選択されているギャラリー(名前)を保持する変数(label_text)を初期化する。
      UpdateContext({Btn_ctrl:Button1});UpdateContext({label_text:""})
      および、 alloc1〜alloc100="SE1"〜"SE100" UpdateContext({allocX:"SEx"})
    2. 座席ボタンのOnSelectに、変数(Btn_ctrl)に押されたボタンをセットする。
      UpdateContext({Btn_ctrl:Button1}) 100個のボタンにそれぞれButton1〜100
    3. 着席ボタンのOnSelectに、変数(label_text)にGallery1.Selected.Title1.Textをセット、変数(Btn_ctrl)のボタンに応じたallocXにlabel_textをセット。
    UpdateContext({label_text:Gallery1.Selected.Title1.Text});
    Switch(Btn_ctrl,
    Button1,UpdateContext({alloc1:label_text}),
    Button2,UpdateContext({alloc2:label_text}),
    Button3,UpdateContext({alloc3:label_text}),
    Button4,UpdateContext({alloc4:label_text}),
    Button5,UpdateContext({alloc5:label_text}),
    : :
    Button100,UpdateContext({alloc100:label_text}),
    Set(label_text,"???")
    )
    

    変数(Btn_ctrl)のボタンに応じたallocXにlabel_textをセットの処理でSwitch関数を使って振り分けています。Button1〜Button100をテーブルに出来れば、もっと簡素に書ける気がしますが、まだ分かっていません。継続課題です。

  3. @mura23go

    Questioner

    大変ありがとうございます。ご提示の動作で、弊方の目的通りです。”着席”ボタンと”座席”ボタンは、ご理解のように 1:N の関係です。早速、上記方法を試してみます。実装できましたらお礼報告します。

  4. なお、座席ボタンを押さずに 着席ボタンを押すと、前回の座席ボタンに上書きしてしまいます。
    このようなエラー操作に対する配慮が必要だと思います。
    (また、座席ボタンを押したら、ボタンの色を変えるなどの使いやすさの配慮なども)

  5. @mura23go

    Questioner

    nak45様、いろいろご配慮、ご指摘ありがとうございます。エラー処理の点、承知しました。ボタンの色を変える、といった配慮が、"検索"機能つける場合は特に必要と考えています。”着席”(=出勤)操作は、ご提案の方法で実装できました。大変ありがとうございました。

  6. 一旦 解決でよろしければ、当Q&Aをクローズしていただければと思います。
    この先でまた質問事項が出てきた時は、改めてQ&Aをあげてください。

  7. @mura23go

    Questioner

    これで本Q&Aはクローズしたいと思います。有難うございました。

Your answer might help someone💌