2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Posted at

これは別ブログに書いた "Delphi Advent Calendar 2018" の 23 日目の記事を一部書き直して、Qiitaに再投稿したものです。

はじめに

伝票などの明細一覧で、行番号の表示は、行の追加や削除を考えるとちょっと面倒なところです。
ちょっと手抜きできないかと考えた方法を纏めたものです。

実装方法

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

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

 Text := FDMemTable1.RecNo.ToString;

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

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

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

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

image.png
(金額昇順)

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

おわりに

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

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?