>>654
レスありがとうございます。
結局、次のような方法で動くようです。

1.関数が登録されているかどうかチェック
  if (&DataSet->Fields->Fields[i]->Validate)のように、関数のポインタ
  のアドレスをチェックする。

2.OnValidateの呼び出し
DataSet->Fields->Fields[i]->Validate(reinterpret_cast<void *>(&DataSet->Fields[i]))

しかし、まだ疑問が残ります。
2.で、確実にValidateが呼び出されているのかどうか、それから、実際の
フィールドにフォーカスを当てても、変更不可能となっていることなどです。
ここら辺の情報について、ヘルプでは情報不足で、BCB関連の書籍もない
ので、迷っています。