GUI機能拡張

Q 14
CSVデータに対して、列名を指定してデータを登録/取得する

A 14
[解決方法]
CSVDocumentクラスのsetCellByName、getCellByNameメソッドを使用します。
(ver4.1.2.0より追加されました。)

このメソッドで列名を指定してデータを取得するためには、予めsetColumnNameメソッドなどで
列名を設定してください。

clearメソッドで列を削除したり、parseやloadメソッドなどでデータを登録した場合は、
列名が失われてしまいますので、setColumnNameメソッドを使用して、再度列名を
設定してください。


[サンプルコード]

Form Form1 {
    X = 0;
    Y = 0;
    Width = 400;
    Height = 300;

    CSVDocument csvobj1;
    CSVDocument csvobj2;

    TextBox TextBox1 {
        X = 10;
        Y = 80;
        Width = 135;
        Height = 20;
    }
    Button Button1 {
        X = 10;
        Y = 10;
        Width = 135;
        Height = 20;
        Title = "getSellByName実行";

        Function OnTouch( e ) {
            /* 0行目の各列を列名を指定して取得 */
            ^.Label1[0] = ^.csvobj1.getCellByName( 0, "id" );
            ^.Label1[1] = ^.csvobj1.getCellByName( 0, "name" );
            ^.Label1[2] = ^.csvobj1.getCellByName( 0, "furi" );
        }
    }
    Label Label1[3] {
        X = 155;
        Y = 10;
        Width = 150;
        Height = 20;
    }

    Button Button2 {
        X = 155;
        Y = 80;
        Width = 130;
        Height = 20;
        Title = "setSellByName実行";

        Function OnTouch( e ) {
            /* 0行目の name 列をテキストボックスの値に変更 */
            ^.csvobj1.setCellByName( 0, "name", ^.TextBox1.Value );
        }
    }
    Button Button3 {
        X = 10;
        Y = 150;
        Width = 135;
        Height = 20;
        Title = "getSellByName実行";

        Function OnTouch( e ) {
            /* 0行目の各列を列名を指定して取得 */
            ^.Label2[0] = ^.csvobj2.getCellByName( 0, "id" );
            ^.Label2[1] = ^.csvobj2.getCellByName( 0, "name" );
            ^.Label2[2] = ^.csvobj2.getCellByName( 0, "furi" );
        }
    }
    Label Label2[3] {
        X = 155;
        Y = 150;
        Width = 150;
        Height = 20;
    }

    if ( !$DESIGNTIME ) {
        csvobj1 << CSV{
            1,鈴木,すずき
            2,林,はやし
            3,田中,たなか
        };

        /* 列名を設定する */
        csvobj1.setColumnName( 0, "id" );
        csvobj1.setColumnName( 1, "name" );
        csvobj1.setColumnName( 2, "furi" );

        /* 列名を設定する */
        csvobj2 << CSV( id, name, furi ){
            1,山田,やまだ
            2,青山,あおやま
            3,吉本,よしもと
        };
    }
}

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