ループ処理中にユーザーが画面を操作できるようにする
2021/10/06
方法
ループ処理中にユーザーが画面を操作できるようにするには、ループ処理内で Yield 関数を呼び出します。
【例】ループ処理中にユーザーによる操作を可能にする
integer i FOR i = 1 TO 10000 Yield() // 1 秒待つ Sleep(1) NEXT
これを利用して、ユーザーの操作によってループ処理を中止させることもできます。
【例】ループ処理中にキャンセルボタンを押下されたら処理を中止する
[インスタンス変数の宣言]
boolean ib_cancel //キャンセルフラグ
[ループ処理]
integer i ib_cancel = FALSE FOR i = 1 TO 10000 Yield() // キャンセルフラグが立っている場合はループ処理を抜ける IF ib_cancel THEN EXIT END IF // 1 秒待つ Sleep(1) NEXT ib_cancel = FALSE //フラグを戻す
[キャンセルボタン]
// キャンセルフラグを立てる ib_cancel = TRUE
ただし、その他のボタンや入力項目への入力等も可能となるため、不要な操作が行われないようコントロールを使用不可にするなど制御する必要があります。
詳しくは下記の記事に Yield 関数についての説明があるので参照してください。
そして時は動き出す・・・もう「応答なし」でフリーズさせないッ!
Tips情報
プロダクト :PowerBuilder
バージョン :2019R3