オブジェクト

Q1
入力オブジェクトへの数値表示
[内容]
金額欄で「0」が入力されたとき「0」、Deleteされたときは空白にしたい


A1
[解決方法]
金額欄で「0」を入力後に「0」を表示し、Deleteキーで入力値を削除後
空白で表示するためには、各オブジェクトのValueTypeをStringのまま
データの成形を行います。

(1)TextBox
初期表示、Deleteキー押下後        「0」入力時

[サンプルコード]
TextBox TextBox1 {
        X = 56;
        Y = 181;
        Width = 139;
        Height = 25;
        HorizontalAlign = $RIGHT;
        NextTabKey = $ENTER;
        
        /* 入力されている場合、フォーマット編集する */
        Function OnTouch( e ) {
            /* 変数 */
            var gaku;
            
            if(Value != ""){
                /* 数値型に変換する */
                gaku = val(Value);
                /* 金額の形式に編集する */
                Value = "\\" + str(gaku,",");
            }
       }
}

[ポイント]
 ・str関数を使い、文字列から数値型に型変換した後、 「\」を付けるように成形します。
 ・Deleteキー押下時、Stringデータが削除されるだけなので、空白の状態になります。

(2)FlexView(TextBox)
初期表示、Deleteキー押下後       「0」入力時

[サンプルコード]
FlexView FlexView1 {
        X = 241;
        Y = 181;
        Width = 122;
        Height = 43;
        NextTabKey = $ENTER;
        
        FlexRecord FlexRecord1 {
            
            FlexTextBox FlexTextBox1 {
                Title = "FlexTextBox1";
                Width = 120;
                HorizontalAlign = $RIGHT;
                TitleHorzAlign = $CENTER;                
                
                /* セル編集時 */
                Function OnTextChanged( e ) {
                    
                    /* 変数 */
                    var r;
                    var txt;
                    
                    /* 入力値を変数に格納する */
                    r = e.row;
                    txt = r.FlexTextBox1.value;
                    
                    if( txt != "" ){
                        /* 数値型に変換し、金額の形式に編集する */
                        txt = "\\" + str(val(txt), ",");
                    }
                    /* 編集した値を表示する */
                    r.FlexTextBox1.value = txt;
                }
            }
        }
        /* 1行追加する */
        InsertRow(1);
    }

[ポイント]
 ・str関数を使い、文字列から数値型に型変換した後、 「\」を付けるように成形します。
 ・Deleteキー押下時、Stringデータが削除されるだけなので、空白の状態になります。

(3)NumberEdit
初期表示、Deleteキー押下後       「0」入力時

[サンプルコード]
NumberEdit NumberEdit1 {
        X = 56;
        Y = 272;
        Width = 139;
        Height = 25;
        Format = "L,999999999999990N";
        NextTabKey = $ENTER;

        if ( !$DESIGNTIME ) {
            /* Deleteした際、空のデータは表示しないように設定する */
            IsNull = $TRUE;
        }
}

[ポイント]
・Formatプロパティの「N」(空のデータは表示しない)を設定することで
 Deleteした際に空白で表示されるようになります。 
・Formatプロパティの「L」と「9」を組み合わせた場合、「\」が常時表示されるので
 1桁目に「0」を付けます。
・IsNullプロパティを$Trueに設定することで、初期表示時に空白で
 表示されるようになります。

(4)MaskEdit
初期表示、Deleteキー押下後       「0」入力時

[サンプルコード]
MaskEdit MaskEdit1 {
        X = 241;
        Y = 272;
        Width = 118;
        Height = 25;
        HorizontalAlign = $RIGHT;
        NextTabKey = $ENTER;
        
        /* フォーマットを指定する */
        Mask = "\\\\\9,990; ";
}

[ポイント]
 ・フォーマットはMaskプロパティで指定します。
 ・MaskEditは他のオブジェクトと異なり、初期表示時もマスク文字が表示されます。
  また、Delete押下後もマスク文字が表示されるので、完全に空白にすることは
  できません。


実際の挙動については、CRSファイル形式のサンプル
 「入力オブジェクトへの数値表示(Obj_009.zip)」
をご確認ください。

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