チュートリアル

このドキュメントでは、初めてUTableに触れる方のために、手っ取り早 く表らしきものを生成する方法を説明します。

参照設定

プロジェクトにsystembase.table.dllファイルへの参照を追加してくだ さい。

デザイナ上での配置

フォーム上にUTableを配置し、適当な大きさに広げてください。UTable はデザイナ上では単に黒い矩形として表れます。列の定義などをデザイ ナから行うことはできません。ほとんどの設定はソースコードで行いま す。

コーディング

Loadイベントのイベントハンドラに、以下のように書きます。

Imports systembase.table

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim rp As New UTable.CRecordProvider
        With New CFieldBuilder
            rp.AddField(0, .Caption("見出し"), .Next(, 2))
            rp.AddField(1, .Check("チェック"), .Next(, 2))
            rp.AddField(2, .Text("項目1"), .Next())
            rp.AddField(3, .Button("ボタン", "押す"), .Next())
            rp.AddField(4, .Text("項目2"), .Break.Skip(2).Next(2))
        End With

        Me.UTable1.Content.SetRecordProvider(rp)
        Me.UTable1.CreateCaption()

        Using Me.UTable1.UpdateBufferBlock
            For i As Integer = 1 To 10
                Me.UTable1.Content.AddRecord().Fields(0).Value = i
            Next
        End Using

    End Sub

End Class

実行すると、次の表が出ます。

コードの説明

先ほど示したソースコードについて説明します。

表の形式を設定するために、CRecordProviderクラスのオブジェクトを定 義します。

        Dim rp As New UTable.CRecordProvider
        With New CFieldBuilder
            rp.AddField(0, .Caption("見出し"), .Next(, 2))
            rp.AddField(1, .Check("チェック"), .Next(, 2))
            rp.AddField(2, .Text("項目1"), .Next())
            rp.AddField(3, .Button("ボタン", "押す"), .Next())
            rp.AddField(4, .Text("項目2"), .Break.Skip(2).Next(2))
        End With

UTableは与えられたCRecordProviderの内容に応じて、レコードを生成し ます。この例では5つのフィールドが定義されています。AddFieldメソッ ドには、フィールドのキー、種類を表すオブジェクト、場所を表すオブ ジェクトを与えます。

CFieldBuilderオブジェクトはフィールドを生成する際に便利な機能を持っ たオブジェクトです。このオブジェクトは最後に生成されたフィールド の位置を覚えていて、Nextメソッドでその右隣の位置を返します。引数 でフィールドのサイズを指定できます。Breakは改行を行い、Skipは位置 を飛ばします。

UTableにrpを設定します。さらに、rpの内容に合わせて見出し行を生成 します。

        Me.UTable1.Content.SetRecordProvider(rp)
        Me.UTable1.CreateCaption()

レコードを追加します。AddRecord()メソッドは、表の最後に新しいレコー ドを追加し、そのレコードを返します。この例では、レコードを10件生 成して、それぞれの見出し列に行番号を設定しています。また、 UpdateBufferBlockのUsing句で囲むことで、レコードが追加されるたび に再描画されることがなくなり、パフォーマンスが向上します。

        Using Me.UTable1.UpdateBufferBlock
            For i As Integer = 1 To 10
                Me.UTable1.Content.AddRecord().Fields(0).Value = i
            Next
        End Using

プロパティ

先ほどの例では、見出し列の内容が左寄せになっていて、少し不恰好で す。CRecordProviderのAddFieldメソッドは、追加されたフィールドの定 義情報を返すので、これに対してプロパティを設定できます。以下のよ うに書き換えてみましょう。

        Dim rp As New UTable.CRecordProvider
        With New CFieldBuilder
            With rp.AddField(0, .Caption("見出し"), .Next(, 2))
                .Setting.HorizontalAlignment = UTable.CSetting.EHAlign.MIDDLE
            End With
            rp.AddField(1, .Check("チェック"), .Next(, 2))
            rp.AddField(2, .Text("項目1"), .Next)
            rp.AddField(3, .Button("ボタン", "押す"), .Next)
            rp.AddField(4, .Text("項目2"), .Break.Skip(2).Next(2))
        End With

目次へ戻る