処理中表示

Q1

時間のかかる処理で実行中を知らせるDialogを表示したい。(Timer利用)
[内容]
時間のかかる処理の前にDialogを表示して、時間がかかる処理が完了した時点でDialogを閉じるようにしてもDialogが表示されない


A1
[原因]
Biz/Browerでは、表示の更新は、一連の処理が終了した時点(アイドル状態)で行われます。
同じFunction内でDialogの表示とDialogの削除を行った場合、Dialogは表示されません。

[解決方法]
Timerイベントを利用して対応します。また、時間のかかる処理はDialog側で行います。

  [サンプルコード]
[Form側]
Button Button1 {
    X = 159;
    Y = 219;
    Width = 79;
    Height = 38;
    Title = "実行";

    Function OnTouch( e ) {
        Get("Dialog1.crs");
    }
}

[Dialog側]
Dialog Dialog1 {
    Title = "Dialog1";
    Form Form1 {
        Width = 300;
        Height = 200;
        Label Label1 {
            X = 27;
            Y = 67;
            Width = 242;
            Height = 32;
            Value = "しばらくお待ちください";
            FontSize = 20;
        }
    }

    if ( !$DESIGNTIME ) {
        /* タイマ起動 */
        SetTimer(0.1);
    }
    Function OnTimer( e ) {
        /* タイマ停止 */
        RemoveTimer();

        /* 時間のかかる処理 */

        /* Dialog消去 */
        Dialog1.Delete();
    }
} 
管理番号:DProM_001
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser Mobile・Biz/Designer Mobile TIPS集 トップへ