レコードデータをリスト化する

レコードデータをJSON形式で読み書きできたら
あとはリスト化して管理することになります。

リスト化するという事で通常はTListを使うところですが、
今回はTDictionaryを使ってみようかと思います。

 
ジェネリックス関数を利用することになるので Uses節に

System.Generics.Defaults,System.Generics.Collections

が必要になります。後々のために Rtti も追加しておくと幸せになれます。

 
さて、
 

基本的な考え方として、それぞれのリスト項目にIDを振り、
項目にアクセスするためには、そのIDを通じて行う。

とします。そのリスト格納部分にTDictionaryを使用します。

 
すべてのレコード形式に対応するようにジェネリックス関数を利用するわけですが、
その準備段階としてレコード形式に関係しないベースとなるクラスを作成します。

とりあえずソースを。これは今使っている簡易的な物です。

コピペなのでこのままでは動かないかもしれませんが、
雰囲気を感じ取ってください。

ゆくゆくは整備していきたいと思いますが、今はとりあえずこれで。

で、実際の格納クラスはこちら。

 
TNYBaseListについて

基本クラスです。内容は以下。

・変更状態の保持
・表示用IDのリストの保持
・抽象メソッドの定義
 ・SaveRecordToJSON
 ・LoadRecordFromJSON
 ・Filter
・プロパティ
 ・DispIDs 表示用IDリスト
 ・Modified 変更状態
 ・Count  登録されている項目数
 ・VST   表示用コンポーネント(現時点では TVirtualStringTree を想定)

表示用IDリストというのはリスト内の項目のうち、
リスト表示用コンポーネント上に表示する項目のIDを列挙したものです。

フィルタリングをした後の項目というとわかるでしょうか。
表示用にIDリストを用意しておきます。

これは項目の表示にはTVirtualStringTreeコンポーネントの利用を想定しているので
この様な形になっています。

レコードリストの本体はTNYRecList<T>てレコード型 T を指定して生成します。

 
TNYRecList<T>について

(以下準備中)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする