処理中表示

Q2

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


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

[解決方法]
Dialogの最初にフォーカスを受けるオブジェクトのGetFocusイベントを利用して対応します。
また、時間のかかる処理は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;
        }
        /* 最初にフォーカスを受けるオブジェクトとして
           Buttonを配置(ただし、サイズは0) */
        Button Button1 {
            X = 0;
            Y = 0;
            Width = 0;
            Height = 0;

            Function OnGetFocus( e ) {

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

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