Delphi: TField.OnGetText イベントの DisplayText パラメータについて

Delphi, TIPS, プログラム, 開発 コメントの追加

Delphi でデータベースを扱う場合、表示系のコンポーネントには TField クラスが項目コンポーネントとして利用されています。

そして、この TField クラスの OnGetText イベントには DisplayText パラメータがあるのですが、その解釈がちょっとわかりづらかったのでメモしておきます。

*

何がわかりづらかったかと言うと、TField クラスには DisplayText というプロパティが存在するんです。

引数ではなく、プロパティ。

一緒だと思うと混乱します。

何せ前者は Boolean 型、後者は string 型を扱うプロパティですから。

*

まず TField は、

  1. 編集中で無い時は DisplayText プロパティの値を表示し、
  2. 編集中の時は Text プロパティの値を表示します。

そして、1. の<編集中で無い場合>の表示について、独自の書式などを適用したい場合に使うのが、OnGetText イベントなんですね。

たとえばこんな感じで、通常なら数値が直接表示される項目の表示を変えることができるわけです。

procedure TMyQuery.XXXGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  if Sender.AsInteger = 0 then begin
    Text := 'nothing'
  end else begin
    Text := 'not zero';
  end;
end;

表示したい値を Text パラメータに代入します。

ただし、DisplayText パラメータが True の時 Text パラメータに代入した値が有効になります(と言っても DisplayText パラメータは、デフォルト値 True ですが)。

DisplayText パラメータが False の場合(自分で値を代入した場合)、AsString の値が採用されます。

ちなみに、DisplayText を True にセットするのみのコードを記述すると、「’DisplayText’ に代入された値は使われていません」DCC 警告が出ます。

  • Share/Bookmark

コメントをどうぞ

Comments links could be nofollow free.

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン