厳選 Visual Studioの便利なショートカット

 

エラー箇所にジャンプ

  • 「Ctrl + Shift + F12」

ブレークポイント

  • 設定/解除 「F9」
  • 有効化/無効化 「Ctrl + F9」

ViEmu特有

  • 「:ls」:バッファナンバーのリストを表示。
  • 「:b2」:バッファ2のファイルを開く。
  • 「:n」:次のバッファのファイルを開く。
  • 「:N」:前のバッファのファイルを開く。
  • 「:bui[ld]」:現在のソリューションをビルド。
  • 「:prb」:現在のプロジェクトをビルド。
  • 「:deb」:デバッグ実行。

【SQLServer】カンマ区切で文字列を分割し、N番目の文字列を取り出す方法

以下のSQLで実現できます。


DECLARE @test AS NVARCHAR(20)
SET @test = 'あいう,えお123え,4かきくけこ'

SELECT value FROM (
    SELECT 
        ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS "id"
       ,value
    FROM STRING_SPLIT(@test, ',')
) T WHERE [id] = 2

 取得結果は、以下のとおりです。



Vimで文字数をカウントする方法

 カウント対象の文字列の末尾にカーソルを移動し、以下のコマンドを実行してみて下さい。

g
Ctrl-g
なお、改行を含む場合は、CR+LFの2文字分が加算されます。

【Sencha ExtJs】callSuper(), callParent()の振る舞いの違い

callSuper()とcallParent()メソッドの振る舞いの違いを整理してみました。

違いは、以下のとおりです。


callSuper()では、Overrideされた基底クラスのメソッドは呼ばれません。

 ・Override -> Base.

対してcallParent()では、Overrideされた基底クラスのメソッドが呼ばれます。

 ・Override -> Derived -> Base.

Ext.application({
    name : 'Fiddle',

    launch : function() {
        var object = Ext.create('Ext.some.DerivedClass');
        object.method();
    }
});
/**
 * 基底クラス
 */
Ext.define('Ext.some.Class', {
    method: function() {
        console.log('Base method');
    }
});

/**
 * 派生クラス
 */
Ext.define('Ext.some.DerivedClass', {
    extend: 'Ext.some.Class',
    method: function() {
        console.log('Derived method.');
        this.callParent();
    }
});

/**
 * 派生クラスをOverride
 */
Ext.define('App.paches.DerivedClass', {
    override: 'Ext.some.DerivedClass',

    method: function() {
        console.log('Override method.');
        //this.callSuper(); // Override -> Base.
        this.callParent(); // Override -> Derived -> Base.
    }
});


 以下にデモ&ソースがあるので参考にしてみて下さい。

デモ&ソース

【Sencha ExtJs Modern】Gridの列を通貨形式で表示する方法

Gridの列上で日本円の通貨形式で表示するサンプルを実装してみました。
「renderer」に表示形式をセットする処理を埋め込んで実装しています。

Ext.application({
    name: 'Fiddle',

    launch: function() {
        var store = Ext.create('Ext.data.Store', {
            fields: ['name''email''phone'],
            data: [{
                'name''橋元',
                'email''hashimoto@xxx.com',
                'phone''55-3434-3434',
                'salary''5'
            }, {
                'name''小西',
                'email''konishi@xxx.com',
                'phone''33-3434-3434',
                'salary''8500000'
            },{
                'name''ポク田ポーク',
                'email''pork@xxx.com',
                'phone''55-3434-3434',
                'salary''999999999'
            }]
        });

        var grid = Ext.create('Ext.grid.Grid', {
            title: '名簿',
            store: store,

            columns: [{
                text: '名前',
                width: 100,
                dataIndex: 'name',
                renderer: function(value, record, dataIndex, cell, column) {
                    console.log(value);
                    console.log(record.get('email'));
                    if (value == 'ポク田ポーク')
                        cell.element.dom.style.backgroundColor = "#99ccff";
                    else
                        cell.element.dom.style.backgroundColor = "#ccffcc";
                    return value;

                }
            }, {
                text: 'Email',
                width: 200,
                dataIndex: 'email'
            }, {
                text: '電話番号',
                width: 100,
                dataIndex: 'phone'
            }, {
                text: '給料',
                textAlign: 'right',
                width: 150,
                dataIndex: 'salary',
                align: 'right',
                renderer: function (value, record) {
                    var tmp = Ext.util.Format.number(value, '0,000');
                    if (tmp != '') {
                        var tmp = "¥" + tmp;
                    }
                    return tmp;
                    //return Ext.util.Format.currency(value, "¥");
                }
            }],
            fullscreen: true,
            renderTo: Ext.getBody()
        });
    }
});



以下にデモ&ソースがあるので参考にしてみて下さい。
デモ&ソース

Sencha ExtJs Modernで通貨入力のカスタムフィールドを実装

日本円の通貨入力のカスタムフィールドを実装してみました。
Ext.application({
    name: 'Fiddle',

    launch: function () {
        console.log('start.');

        Ext.define('User', {
            extend: 'Ext.data.Model',
            fields: [{
                name: 'phone',
                type: 'auto'
            }],

        });

        var panel = Ext.create('Ext.form.Panel', {
            fullscreen: true,
            focusable: false,
            items: [{
                xtype: 'fieldset',
                title: '通貨フィールドSample(日本円)',
                items: [{
                    xtype: 'currency-field',
                    label: '金額',
                }]
            }]
        });

    }
});

Ext.define('Ext.ux.field.CurrencyField', {
    extend: 'Ext.field.Text',
    xtype: 'currency-field',

    textAlign: 'right',

    statics: {
        PREFIX : '¥'
    },
    
    initialize: function() {
        this.callParent(arguments);
    },

    /**
     * カンマと¥を除去して値を取得
     */
    getValue : function() {
        var str = String(this.callSuper());
        if (str) {
            var num = parseFloat(str.replace(/[^\d\.-]/g,''));
            num = isNaN(num) ? '' : num
            return num;
        }
        return '';
    },

    /**
     * フォーカスを失った時にカンマと¥を付与
     */
    onBlur : function(obj, e, eOpts ) {
        var str = String(this.getValue());

        var tmp = Ext.util.Format.number(str, '0,000');
        if (tmp !== '') {
            var tmp = this.self.PREFIX + tmp;                    
        }
        this.setValue(tmp);
        return this.callSuper(arguments);
    },

    /**
     * フォーカスを得た時にカンマと¥を除去
     */
    onFocus: function (obj, e, eOpts) {
        this.setValue(this.getValue());
        return this.callSuper(arguments);
    }
});


以下にデモ&ソースがあるので参考にしてみて下さい。
デモ&ソース

厳選 Visual Studioの便利なショートカット

  エラー箇所にジャンプ 「Ctrl + Shift + F12」 ブレークポイント 設定/解除 「F9」 有効化/無効化 「Ctrl + F9」 ViEmu特有 「:ls」:バッファナンバーのリストを表示。 「:b2」:バッファ2のファイルを開く。 「:n」:次のバッファのファ...