#PowerApps スライダータイマーを柔軟に制御する
スライダータイマーとは??
@github129 氏のこちらの記事になります
【#PowerApps】PowerAppsでタイマーコントロールを使わずにタイマーコントロールよりも高速なループを実行する方法
この手法により、タイマー制御が非常に高速になりまして、本当に有用なものとなったのですが
問題は、早すぎるということですね。
Patchなどを使って、データソースのアップデートを実行したい場合、更新完了を待たずに次に行ってしまいかねません。
ならば、タイマーを使えばいいという話になるのですが
@tomikiya 氏のこちらの記事の通り
[PowerApps]バックグランドで緯度経度を取得する
タイマーはバックグラウンドでは実行されないということがわかりました。
なので、スライダータイマーでかつ、実行タイミングを制御する方法を以下にまとめることにしました。
完成系
使用する変数
変数名 | 意味 |
---|---|
SliderTimer | スライダータイマーのループ判定に使用 0~1 チェンジ用 2はストップ |
Cnt | 間隔をあけて実行する用のカウンタ変数 |
ExecCnt | 実行間隔を指定(回数) |
OnStartプロパティ
Set(Slidertimer,2);
Set(Cnt,0);
Set(ExecCnt,500)
START/STOPの実装
スライダータイマーの方式にも記載ありますが、こういうやり方もあるんだぞということで・・・
Startボタン
OnSelect
Set(Slidertimer,0)
Stopボタン
OnSelect
Set(Slidertimer,2)
スライダー
Default
Slidertimer
Max
2
Min
0
OnChange
Switch(
Slidertimer,
0,Set(Slidertimer,1),
1,Set(Slidertimer,0)
);
実行間隔制御の実装
次は、先ほど作ったものに実行間隔制御を実装していきます。
スライダー
OnChange
Switch(
Slidertimer,
0,Set(Slidertimer,1),
1,Set(Slidertimer,0);Set(ExecCnt,Cnt+1)
);
If(
ExecCnt=Cnt,
// 間隔制御して実行させたい処理を入れる
Collect(
GPSData,{
datetime:Now(),
lat:Location.Latitude,
long:Location.Latitude,
alt:Location.Altitude,conp:Compass
}
);
// ここまで
// 間隔カウンタリセット
Set(Cnt,0),
""
)
これでスライダーの値が500回になったときに処理が実行されるという間隔制御ができるようになります。
応用
ラジオボタンなどを使うことで、このように、実行間隔をアプリ上で変更することもできるようになります!
Author And Source
この問題について(#PowerApps スライダータイマーを柔軟に制御する), 我々は、より多くの情報をここで見つけました https://qiita.com/rnakamuramartiny/items/4fa8c866e90de97902a6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .