NumberEdit

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

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

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

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

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


[サンプルコード]

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

Form Form1 {
    X = 0;
    Y = 0;
    Width = 250;
    Height = 150;
    NumberEdit NumberEdit1 {
        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.NumberEdit1.Value);
        }
    }
    Function OnKeyDown( e ) {
        if ( e.AltKey == 1 && e.Key == "S"){
            //.DecideValue();
            Form1.Button1.OnTouch( e );
        }
    }
}
CRSファイル形式のサンプルを
  「NumberEdit値確定サンプル(NumberEdit.zip)
よりご利用いただけます。

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