Curlで始めるリッチクライアント(2) Page 2/3

Curlによるオブジェクト指向開発と
強力な標準クラス

住商情報システム
三野 凡希
2005/6/17

データモデルのRecordSetクラス

 サンプル・アプリケーションは、登録ボタンを押すとデータモデルのRecordSetクラスに登録されるようになっています。また、一覧表タブに表示されている一覧表にも同じRecordSetクラスが使われています(図4)。このようにRecordSetクラスは、プレゼンテーション・レイヤで共通に使用するのに便利なクラスです。RecordSetクラスの基本的な構造を解説しましょう。

 

 

図4 サンプル・アプリケーションの一覧表タブ

 RecordSetクラスはデータをレコードとフィールドで編成し、データの変更に関するイベントを管理する機能を持っています。つまり、データベースのテーブルと同じような機能が備わっています。関連する重要なクラスには、RecordFieldsクラス、RecordDataクラスなどがあります。RecordFieldsクラスはRecordSetクラスのフィールドを定義するために使用されます。

 RecordFieldsクラスは、リスト3のように複数のRecordFieldオブジェクトで構成され、データフィールドの名前を指定するname、フィールドのデータを表示する際に使う文字列を指定するcaption、フィールドのデータ値のDomain(型)を指定するdomainなどから構成されます。

{RecordSet
  {RecordFields
    {RecordField 
      "name", caption = "氏名", domain = String
    },
    {RecordField 
      "hurigana", caption = "フリガナ", domain = String
    },
    {RecordField 
      "postalcode", caption = "郵便番号", domain = String
    },
  (以下略)
  },
リスト3 複数のRecordFieldオブジェクトで構成されるRecordFieldsクラス
(RecordSet-and-RecordGrid.scurlの8行目からを抽出)

 最初のRecordFieldでは、フィールドの名前を「name」、表示するときの文字列を「氏名」、データのDomain(型)を「String」と設定しています。これ以降も同じ構成でRecordFieldを設定しています。これらはちょうどデータベースのテーブルを定義するのとほぼ同じです。RecordSetクラスはデータベースのテーブルと同じような使い方をCurlアプリケーション内で実現しています。また、実際に使用されているデータは、リスト4のようにRecordDataクラスを使用しています。

    {RecordData name="カール太郎", hurigana="カールタロウ", postalcode="123-4567", prefecture="東京都", city="杉並区", town="A町", tel="03-1234-5678", mail="curltaro@curlap.com"},
    {RecordData name="カール次郎", hurigana="カールジロウ", postalcode="123-4568", prefecture="埼玉県", city="川越市", town="B町", tel="0123-1234-5679", mail="curljiro@curlap.com"},
    {RecordData name="カール三郎", hurigana="カールサブロウ", postalcode="123-4569", prefecture="神奈川県", city="横浜市", town="C町", tel="044-1234-5680", mail="curlsaburo@curlap.com"},
リスト4 RecordDataクラスに格納されたデータ
(RecordSet-and-RecordGrid.scurlの28行目からを抽出)

 リスト4のようにRecordSetクラスにRecordDataクラスを使用してデータを静的に設定することもできますが、通常はWebサーバ(またはファイルなど)からデータを取得して設定する方が一般的です。その場合には、リスト5のCommandButtonクラスの{on Action do …}にあるように、RecordSetクラスのappendメソッドなどを使用してダイナミックにデータを追加します。

{rs.append {RecordData
              name       = name-tf.value,
              hurigana   = hurigana-tf.value,
              postalcode = postalcode1-tf.value & "-" & postalcode2-tf.value,
              (以下略)
           }
}
リスト5 RecordSetクラスのappendメソッドでダイナミックにデータを追加
(Start.Curlの37行目からを抽出)

 また、このほかにもRecordSetクラスにはデータベースと同じようにcommitメソッド(コミット)、revertメソッド(復帰)、delete-all(削除)など、たくさんのメソッドが用意されています。詳しくはSurge Labドキュメントの「目次」タブ−「Surge Lab開発者ガイド」−「データアクセス」および「APIリファレンス」の「RecordSet」クラスを参照してください(Surge Lab IDE 60日体験版のダウンロードページ)。(次ページに続く)

  2/3

 INDEX

Curlで始めるリッチクライアント(2)
Curlによるオブジェクト指向開発と強力な標準クラス
  Page1
前回のおさらいと今回の解説ポイント
Curlのアプリケーション構成
TextFieldクラスを継承したサブクラス(共通部品)化
Page2
データモデルのRecordSetクラス
  Page3
強力なユーザー・インターフェイスを持つRecordGridクラス
レイアウトコンテナとポータルにも使えるTabContainerクラス
まとめ




HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間