EditBox

Q1
EditBoxの値確定
[内容]
フォーカスがあたっているEditBoxの値を確定したい

A1
[原因]
EditBoxオブジェクトに入力中の値は、下記のタイミングで確定します。
 ・キーボードフォーカスが失われたとき
 ・Enterキー、Escキー、PageUp、PageDownまたはファンクションキーを押したとき

例えば、Buttonオブジェクトで発生するTouchイベントのイベントハンドラでEditBoxオブジェクトの値を参照する場合、Buttonオブジェクトをマウスクリック、もしくはButtonオブジェクトのAltKeyプロパティに設定したファンクションキー押下でEditBoxオブジェクトの値が確定します。

しかし、ButtonオブジェクトAltKeyプロパティへ値を確定しないキー(HOMEキーなど)を設定した場合や、キーをショートカットキーとしてFormオブジェクトのOnKeyDownイベントハンドラで受けて、ButtonオブジェクトのOnTouchイベントハンドラを呼んだ場合は、値が確定せず、Valueプロパティは空です(Number型の場合は0が入ります)。

[解決方法]
DecideValueメソッドを使用します。 DecideValueメソッドは、未確定状態のオブジェクトの値を、強制的にValueプロパティに転送します。


[サンプルコード]


下記はEditBox オブジェクトに値を入力し、カーソルが他オブジェクトに移動していない状態で、Alt+Sキーの押下によってEditBoxオブジェクトの値を確定する例です。 KeyDownイベントハンドラ内で//.DecideValue();の指定をしない場合、EditBoxオブジェクトの値は確定しません。

Form Form1 {
    X = 0;
    Y = 0;
    Width = 250;
    Height = 150;
    EditBox EditBox1 {
        X = 10;
        Y = 10;
        Width = 100;
        Height = 30;
    }
    Button Button1 {
        X = 10;
        Y = 50;
        Width = 100;
        Height = 30;
        Title = "ボタン(&S)";
        Function OnTouch( e ) {
            MessageBox(Form1.EditBox1.Value);
        }
    }
    Function OnKeyDown( e ) {
        if ( e.AltKey == 1 && e.Key == "S"){
            //.DecideValue();
            Form1.Button1.OnTouch( e );
        }
    }
}
CRSファイル形式のサンプルを
  「EditBox値確定サンプル(EditBox.zip)
よりご利用いただけます。

管理番号:Edt_001
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ