DateEdit

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

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

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

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

[解決方法]
DecideValueメソッドを使用します。 DecideValueメソッドは、未確定状態のオブジェクトの値を、強制的にValueプロパティ に転送します。 Date型でない値を確定しようとした場合、Valueプロパティは空になります。


[サンプルコード]

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

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

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