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

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

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