ダイアログ

Q1
Dialog表示がループする

A1
[原因]
Biz/Browserのオブジェクトは初期表示にTouchイベントを発生させるものがあります。その時に、Dialog内でTouchを拾うイベントハンドラがないと、親に継承され、親のDialogをGetしているTouchイベントハンドラが再度実行されることによります。FormからDialogを呼ぶ時に、Buttonの子供としてGetしていることに起因します。

[解決方法]
解決方法として、下記の2つの方法が考えられます。

Formオブジェクトの子オブジェクトとしてDialogオブジェクトをGetする。[推奨]
Buttonオブジェクトの子オブジェクトとしてDialogオブジェクトをGetし、Dialogオブジェクト内のダミーのOnTouchイベントハンドラでイベントを捕捉する。


[サンプルコード]

・Formオブジェクトの子オブジェクトとしてDialogオブジェクトをGetする[推奨]

Form Form1 {
    X = 0;
    Y = 0;
    Width = 400;
    Height = 300;
    Button Button1 {
        X = 5;
        Y = 5;
        Width = 100;
        Height = 20;

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

・Buttonオブジェクトの子オブジェクトとしてDialogオブジェクトをGetし、
 Dialogオブジェクト内のダミーのOnTouchイベントハンドラでイベントを捕捉する。

Form Form1 {
    X = 0;
    Y = 0;
    Width = 400;
    Height = 300;
    Button Button1 {
        X = 5;
        Y = 5;
        Width = 100;
        Height = 20;

        Function OnTouch( e ) {
            Get("Dialog1.crs");
        }
    }
    /* ダミーイベントハンドラ */
    Function OnTouch(e){
    }
}
管理番号:DlgM_001
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser Mobile・Biz/Designer Mobile TIPS集 トップへ