I answer late, but for information, it seems to me that the TField.OldValue and TField.NewValue properties are normally "active",
only if the cached update is enabled (TDataset.CachedUpdates:= True;)!
In addition, TDataSet.modified is True, as soon as a value is assigned to a TField, even if the same value is reassigned
. So, to know if the value is realy different, it is our responsability to store somewhere the original values of the fields.
And you can also use TDatasource.onDataChange: this event has a parameter that indicates, either the modified TField name (from a TDBEdit like yours
), or nil if the whole record is modified (for example, when the record is loaded from the disk towards the db-aware controls).