ホーム | 機能紹介 | ドキュメント | ダウンロード |
アーキテクチャこの項では、UTableのアーキテクチャについて包括的な説明を行います。 コンテントUTableは表の内容となるデータをコンテントというオブジェクトに保持します。 また、UTableは以下に示す3つのコンテントを常に保持しており、 それぞれにデータを入れることができます。
それぞれのコンテントは、以下の図のように配置されます。 ![]() Contentのみが垂直スクロールバーによるスクロールが可能です。 HeaderContentとFooterContentはスクロールせずに常に表示領域の上と下に描画されます。 これらは見出し行や集計行に利用してください。 レコードとフィールドコンテントは0個以上のレコードを持ちます。 また、レコードは0個以上のフィールドを持ちます。 ![]() ひとつのレコードが複数行から成り立つ場合もあります。 ![]() コンテント内でレコードはリストとして保持されます。 特定のレコードにアクセスする場合は、以下のように先頭からのインデックスを指定します。 Table.Content.Records(10) レコード内でフィールドはハッシュテーブルに保持されます。 特定のフィールドにアクセスする場合は、任意の型のキーを指定します。 Table.Content.Records(10).Fields("KEY") 子コンテントレコードは子コンテントを持つことができます。 子コンテントは親となるレコードのCreateChildメソッドで作成することができ、 Childというプロパティでアクセスすることができます。 ![]() レコードとフィールドの作成方法コンテントにレコードを追加するには通常、AddRecordメソッドを使用します。 AddRecordメソッドは追加されたレコードを返します。 なお、コンテントとレコードの詳しい操作方法については こちらをご覧ください。 レコードにフィールドを追加するには、AddFieldメソッドを呼びます。 AddFieldメソッドには以下の引数を指定します。
2つ目の引数に指定するフィールドプロバイダによって、フィールドの種類が決まります。 フィールドプロバイダは自作することもできます。 詳細についてはこちらをご覧ください。 3つ目の引数であるリージョンには、UTable.CGrid.CRegionクラスのオブジェクトを指定します。 リージョンを省略すると、非表示のフィールドを作成することができます。 なお、特に問題がない限り、リージョンを生成するにはレイアウトビルダを用いてください。 レイアウトビルダの詳細についてはこちらをご覧ください。 このドキュメントでは、参考のためにレイアウトビルダを用いずにリージョンを指定する例を示します。 あまり実用的な例ではないかもしれませんが、以下のようにすると、 レコードごとにまったく異なる配置でフィールドを生成することができます。 Dim r As UTable.CRecord r = Table.Content.AddRecord r.AddField(0, New CCaptionFieldProvider("AAA"), New UTable.CGrid.CRegion(0, 0)) r.AddField(1, New CTextFieldProvider(), New UTable.CGrid.CRegion(0, 1)) r = Table.Content.AddRecord r.AddField(0, New CTextFieldProvider(), New UTable.CGrid.CRegion(0, 0, 1, 2)) r = Table.Content.AddRecord r.AddField(0, New CTextFieldProvider(), New UTable.CGrid.CRegion(0, 0)) r.AddField(1, New CTextFieldProvider()) '非表示フィールド 実行結果は下図のようになります。 ![]() レコードプロバイダ下図のように、同一コンテント内のレコードが全て同じフィールドを持つという場合は、 レコードプロバイダというオブジェクトを用いると便利です。 レコードプロバイダは、各レコードが持つべきフィールドの定義情報を保持し、 その内容を元にコンテントは自動的にフィールド生成を行うことができるようになります。 ![]() 図のテーブルを作成するレコードプロバイダを定義するには、以下のように書きます。 Dim rp As New UTable.CRecordProvider rp.AddField(0, New CTextFieldProvider(), New UTable.CGrid.CRegion(0, 0)) rp.AddField(1, New CTextFieldProvider(), New UTable.CGrid.CRegion(0, 1)) rp.AddField(2, New CTextFieldProvider(), New UTable.CGrid.CRegion(0, 2)) 次のコードで、レコードプロバイダをコンテントに設定します。 CreateCaptionメソッドは、Contentに与えられたレコードプロバイダの 内容を元にして、HeaderContent内に見出しレコードを生成します。 Table.Content.SetRecordProvider(rp) Table.CreateCaption() レコードプロバイダを設定しておけば、単にAddRecordメソッドを呼ぶだ けで自動的にフィールドが生成されます。 For i As Integer = 1 To 10 Table.Content.AddRecord() 'フィールドが自動的に生成される Next 次へ ドキュメントのトップ / ホーム |
Copyright (c) 2009, SystemBase Co.,Ltd. |