| ホーム | 機能紹介 | ドキュメント | ダウンロード |
|
この項では、アーカイブに付属しているSample1の内容について説明します。 下図のテーブルを作成してみましょう。
プロジェクトを新規作成し、systembase.table.dllへの参照を追加します。 UTableの全てのクラスはsystembase.table名前空間以下に定義されています。 ソースファイルの先頭にはImports文を書くようにしてください。
Imports systembase.table
次に、UTableを継承したクラスUTableExを以下のようにして定義します。 プロジェクト内では常にこのUTableExを用います。 こうすることで、プロジェクト全体で利用したい拡張がもしあればUTableExに書くことができます。 UTableを使用する際は常にこの方法を用いるとよいでしょう。
Public Class UTableEx
Inherits systembase.table.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. |