ホーム | 機能紹介 | ドキュメント | ダウンロード |
この項では、アーカイブに付属している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. |