UTable .NET Framework用 表入力コンポーネント
ドキュメント

この項では、アーカイブに付属している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メソッドは以下の引数を受け取ります。

引数意味
キー このカラムを参照するために使われるキーです
ユニークである必要があります
フィールドプロバイダフィールドの種類を現すオブジェクトを指定します
レイアウト(省略可) フィールドの位置とサイズを設定します
省略するかNothingを指定すると、非表示のフィールドを作ることができます

フィールドプロバイダは、フィールドを制御するためのオブジェクトです。 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.
All rights reserved.