| ホーム | 機能紹介 | ドキュメント | ダウンロード |
|
この項では、アーカイブに付属しているSample1の内容について説明します。 下図のテーブルを作成してみましょう。
プロジェクトの参照設定UTableを利用するには、アーカイブ内のbinディレクトリ以下にあるsystembase.table.dllへの参照を追加する必要があります。 UTableの全てのクラスはsystembase.table名前空間以下に定義されています。 今後は、各ソースファイルの先頭には以下のImports文が書いてあるという前提で説明を行います。
Imports systembase.table
UTableの配置systembase.table.UTableコントロールが、その名の通りUTableの実体となるクラスです。 このUTableを直接フォームに配置しても良いのですが、 プロジェクトごとに何らかの拡張を行いたくなった場合のために、 UTableを継承したクラスUTableExを定義しておきましょう。 UTableEx.vbというファイルをプロジェクトに新規作成し、以下のコードを書きます。
Public Class UTableEx
Inherits UTable
End Class
ビルドすることでUTableExはツールボックスに現れます。 フォームにUTableExを配置し、名前をTableとして適当な大きさに広げてください。
UTableはデザイナ上では上図のように、黒い矩形として表れます。 フィールドの設定などは、すべてコード上で行います。 フィールドの定義フォームのLoadイベントハンドラに、以下のコードを書きます。
Dim rp As New UTable.CRecordProvider
With New CLayoutBuilder
rp.AddField("caption", New CCaptionFieldProvider("キャプション"), .Next)
rp.AddField("input", New CTextFieldProvider("入力項目"), .Next)
rp.AddField("check", New CCheckFieldProvider("チェック"), .Next)
rp.AddField("button", New CButtonFieldProvider("ボタン", "OK"), .Next)
End With
Me.Table.Content.SetRecordProvider(rp)
フィールドの定義は通常、レコードプロバイダ(CRecordProvider)というオブジェクトに対して設定します。 レコードプロバイダのAddFieldメソッドで、フィールドを追加します。 AddFieldメソッドは以下の引数を受け取ります。
フィールドプロバイダは、フィールドを制御するためのオブジェクトです。 AddFieldに渡すフィールドプロバイダによって、生成されるフィールドの種類が決まります。 フィールドプロバイダは自作することもできます。 レイアウトにはフィールドの位置を表すオブジェクトを指定します。 通常、この引数はレイアウトビルダ(CLayoutBuilder)を用いて生成します。 レイアウトビルダはNextメソッドが呼ばれるたびに、 最後に生成したフィールドの右隣を表すリージョンを返します。 これにより、横一列に並んだフィールドを簡単に生成でき、 またフィールド順の入れ替えもソースコード上での行の入れ替えを行うだけで可能となります。 ヘッダ(見出し)の作成以下のコードで、レコードプロバイダに基づいてヘッダに見出しレコードが生成されます。 ヘッダは垂直方向にスクロールすることはありません。
Me.Table.CreateCaption()
固定列以下のコードで、左端のフィールドが水平方向にスクロールしないようにします。
Me.Table.FixedCols = 1
レコードの作成以下のコードで、レコードが作成されます。 多くのレコードを作成する場合、レンダリングをブロックしておかないと、 レコード毎に再描画が発生してパフォーマンスが低下します。 RenderBlockのUsing句内で処理を行うことで、再描画が繰り返し行われることを防ぐことができます。 なお、この例では"caption"フィールドにレコード番号を振っています。
Using Me.Table.RenderBlock
For i As Integer = 1 To 20
Me.Table.Content.AddRecord().Fields("caption").Value = i
Next
End Using
フッタの作成次に、フッタを作成します。 フッタはFooterContentにレコードを追加することで作成できます。 ただし、FooterContentにはレコードプロバイダが設定されていないので、 AddRecordするだけではフィールドは生成されません。 そこで、レコードに直接フィールドを追加していきます。
Dim footer As UTable.CRecord = Me.Table.FooterContent.AddRecord
With New CLayoutBuilder
footer.AddField("0", New CCaptionFieldProvider("フッタ"), .Next(1, 3))
footer.AddField("1", New CTextFieldProvider(), .Next)
End With
次へ ドキュメントのトップ / ホーム |
||||||||
|
Copyright (c) 2009, SystemBase Co.,Ltd. |