ループ処理中にユーザーが画面を操作できるようにする

PowerBuilder Tips

方法

ループ処理中にユーザーが画面を操作できるようにするには、ループ処理内で 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

Tips 一覧を見る
PowerBuilder マイグレーション
PowerBuilder 2019 R3 日本語版リリース 紹介動画