SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CurlデベロッパーセンターPick Up(AD)

Curl Apps Galleryで注目を集める「見積デモ」を紐解く
~RecordGridとRecordSet~

第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

Excelのようなデータの表現と操作性を持つRecordGrid

 RecordGridはCurlのGUIの1つで、その操作性の高さから多くのアプリケーションで利用されています。また、プロパティを変更することでRecordGridの操作性や概観を変えられるため、機能を変更するのも比較的容易です。

 RecordGridを使用するときには、RecordSetというデータクラスを使用します。RecordSetとはデータを行・列の形式で2次元に管理し、操作するためのAPIで、コンピュータのメモリにもよりますが何十万というレコードを格納することも可能です。

 RecordSetを作成するときは、RecordFieldを用いてデータの列名を定義します。以下は、RecordGridとRecordSetを用いた簡単なサンプルの例です。このソースコードを実行すると、上図のようなグリッドが表示されます。

{curl 6.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

||データを管理するRecordSetを定義します。
{let people:RecordSet =
    {RecordSet
        {RecordFields
            {RecordField "Delete", domain = bool,caption = "削除"},
            {RecordField "Code", domain = String,caption = "品名コード"},
            {RecordField "Name", domain = String,caption = "品名"},
            {RecordField "Count", domain = int,caption = "数量"},
            {RecordField "Price", domain = int,caption = "売上単価"},
            {RecordField "Subtotal", domain = int,caption = "売上合計"}
        },
        {RecordData Code = "A01", Name = "Windowsデスクトップ", Count = 1, Price = 76000, Subtotal = 76000},
        {RecordData Code = "A02", Name = "Windowsノート", Count = 7, Price = 155000, Subtotal = 1085000},
        {RecordData Code = "A03", Name = "Macデスクトップ", Count = 1, Price = 83000, Subtotal = 83000}
    }
}
||データを表示するRecordGridを定義します。
{let rg:RecordGrid = 
    {RecordGrid
        height = 3cm, width = 10cm, record-source = people
    }
}

{value rg}

RecordGridのカスタマイズ

 さて、このさまざまな機能を持っているRecordGridですが、プロパティの変更や部品のカスタマイズを行うことでさらに機能を拡張できます。1つの例として、下図の売上単価や売上合計のように、数値の表示を変更する方法について見ていきましょう。

 データの表示形式を変更するにはformat-specを利用します。format-specプロパティはRecordGrid、RecordGridColumn、RecordGridCellそれぞれに存在しています。そのため、データの表示形式の範囲をグリッド全体、列単位、セル単位という形で設定することが可能です。format-specを指定するときには、データの変更するロジックをプロパティで指定します。

 下記のサンプルでは、format-specにてデータを円表記に変換する処理を指定しています。

{import * from CURL.LANGUAGE.FORMAT}

{let formatter:NumberFormatter =
    {NumberFormatter.create-currency-formatter
        locale = {Locale "ja"}
    }
}

{do
    set formatter.grouping-size = 3
}

{let rg:RecordGrid = 
    {RecordGrid
        record-source = people,
        height = 3cm,
        {RecordGridColumn "Delete"},
        {RecordGridColumn "Code" },
        {RecordGridColumn "Name" },
        {RecordGridColumn "Count" ,halign = "right"},
        {RecordGridColumn "Price" , halign = "right" },
        {RecordGridColumn "Subtotal",
            halign = "right",
            format-spec =
                {proc {value:any}:String
                    {return
                        {formatter.format value}
                    }
                }
        }
    }
}

{value rg}

次のページ
データの集計

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
CurlデベロッパーセンターPick Up連載記事一覧

もっと読む

この記事の著者

株式会社カール 宮崎 直人(カブシキガイシャカールミヤザキナオト)

リッチクライアント言語『Curl』の普及に努め、自社主催のセミナーの講師や導入コンサルタントなどを担当。現在はマーケティングにも携わり、HPの更新やコンテンツの拡充なども行っている。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3623 2009/03/24 10:30

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング