ホーム | 機能紹介 | ドキュメント | ダウンロード |
この項では、アーカイブに付属している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メソッドは以下の引数を受け取ります。
フィールドプロバイダは、フィールドを制御するためのオブジェクトです。 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. |