2018年12月23日

一覧の行番号にTFDMemTable.RecNoプロパティ

これは Delphi Advent Calendar 2018 の 23 日目の記事です。

伝票などの明細一覧で、行番号の表示は、行の追加や削除を考えるとちょっと面倒なところです。

そこで、データセットのRecNoプロパティの利用です。
とりあえず簡略化して、下記のような画面の明細画面とします。
テーブルのフィールドは、
    行番号: TIntegerField;
    品名: TWideStringField;
    数量: TIntegerField;
    金額: TIntegerField;
です。データセット名は、FDMemTable1とします。

行番号フィールドのGetTextイベントに下記を追加します。

 Text := FDMemTable1.RecNo.ToString;

削除については、2行目削除すると下記のように、データセットの内容を操作せずリナンバーされます。

追加時は、
となり、行番号が-1となります。データセットに対して、Postをすれば下記のように行番号が設定されます。


実際に、データベースに登録する際は、当然行番号の振り直しは必要になります。

注意点は、RecNoプロパティは、データセットのデータに対し紐づけされているわけではないということです。
ソートや、フィルタをかけると、行番号が変わります。表示されてる行番号が、RecNoの値になっているようです。

(金額昇順)

RecNoプロパティは、他にも、Bookmark代わりに使えたりしています。


今回は、TFDMemTableで記述しましたが、RecNoプロパティは、TDataSetからあるので他のデータセットでも使えると思いますが、動きが確認できていないので、とりあえず、TFDMemTableとしています。
また今回の上記画面は、Delphi 10.2で動かしています。


posted by しんくそふと at 08:00| Comment(0) | TrackBack(0) | 開発TIPS
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/185239972
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック