ホーム | 機能紹介 | ドキュメント | ダウンロード |
コンテントとレコードの操作この項では、コンテント、レコードに用意されている メソッドやプロパティについて説明します。 レコードの追加・削除・移動コンテントに含まれるレコードはRecordsリスト内に格納されています。 ただし、このRecordsリストの要素を直接追加・削除・移動しないでください。 代わりに、コンテントに用意された以下のメソッドを利用してください。
コンテントには、最後に追加されたレコードを返すLastAddedRecordというプロパティがあります。 record = Content.LastAddedRecord ただし、このプロパティが返すレコードは常に存在するとは限らないことに注意してください。 例えば、あるレコードを追加した直後に削除した場合などは、 そのレコードは既にコンテント内に存在しないことになります。 なお、LastAddedRecordプロパティは、CrearRecordメソッドが実行されるとNothingとなります。 コンテント・レコード・フィールドの参照フィールドは自身を含んでいるレコード・コンテント・テーブルへの参照を持っています。 また、レコードは自身を含むコンテント・テーブルへの参照を持っています。 そういった親子関係をたどるためのプロパティまたはメソッドを以下に示します。
表示・非表示の制御コンテントとレコードはVisibleプロパティで表示・非表示を制御することができます。 よく利用されるのは、階層構造における子コンテントを非表示にするといった操作です。 以下のように書きます。 Record.Child.Visible = False ソートコンテントのSortメソッドを呼ぶことで、レコードのソートを行うことができます。 Sortメソッドには以下のオーバーロードがあります。 Content.Sort(key) 'keyに対応するフィールドのValueで昇順にソートする Content.Sort(key, order) 'orderに昇順(ASCEND)か降順(DESCEND)を指定 Content.Sort(key, order, comparer) 'コンペアラを指定 comparerにはUTable.CComparerクラスか、 これを継承したクラスのオブジェクトを指定します。 comparerが指定されなかった場合は、 存在するならばレコードプロバイダの対応するフィールドディスクリプタが持つ Comparerが利用されます。 存在しなければテーブルのComarerが利用されます。 UTable.CComparerクラスには、 Nothing値をどのように扱うかを制御するプロパティNullRuleが定義されています。 NullRuleのとり得る値は以下の通りです。
ユーザ操作によるソートTable.Setting.UserSortableをALLOWとすることで、 ユーザが見出しフィールドをダブルクリックした時にcontentのレコードが ソートされるようになります。 特定のフィールドがダブルクリックされた時のみソート可能としたいといった場合は、 フィールドディスクリプタのUserSortableをALLOWとします。 UserSortableとComparerを設定するコード例を以下に示します。 Table.Setting.UserSortable = UTable.EAllow.ALLOW Table.Comparer = myComparer With rp.AddField(key, New CFieldProvider, .Next) .UserSortable = UTable.EAllow.ALLOW .Comparer = myComparer End With Table.Setting.UserSortableをALLOWとし、 あるフィールドのUserSortableをDISABLEとするといったこともできます。 この場合、指定されたフィールドの見出しだけがダブルクリックに反応しなくなります。 サンプル以下のようなサンプルを作成してみましょう。 ユーザがnameの見出しをダブルクリックすると、 まずcheckの状態でソートされた後にnameでソートされるようにします。 ![]() このような特殊なソートを行うには、コンペアラを作成する必要があります。 前述しましたが、コンペアラはUTable.CComparerクラスを継承して作成します。 なお、UTable.CComparerクラスはrecords, key, orderというプロパティを持っています。 recordsはソートの対象となるレコードのリスト。 key, orderはSortメソッドの引数に渡されたkeyとorderの値です。 Class CSampleComparer Inherits UTable.CComparer Public Overrides Function Compare(ByVal x As Integer, ByVal y As Integer) As Integer Dim checkX As Object = Me.records(x).Fields("check").Value Dim checkY As Object = Me.records(y).Fields("check").Value If checkX <> checkY Then Select Case Me.order Case UTable.CSortState.EOrder.ASCEND Return checkX < checkY Case UTable.CSortState.EOrder.DESCEND Return checkX > checkY End Select Else Return MyBase.Compare(x, y) End If End Function End Class このコンペアラをフィールドディスクプリタに設定し、 UserSortableをALLOWにします。 Dim rp As New UTable.CRecordProvider With New CLayoutBuilder rp.AddField("check", New CCheckFieldProvider("check"), .Next) rp.AddField("name", New CTextFieldProvider("name"), .Next).Comparer = New CSampleComparer End With Me.Table.Content.SetRecordProvider(rp) Me.Table.CreateCaption() Me.Table.Setting.UserSortable = UTable.ESortable.ALLOW 次へ ドキュメントのトップ / ホーム |
|||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright (c) 2009, SystemBase Co.,Ltd. |