[fpc-devel] Recent changes to TField.SetData

LacaK lacak at zoznam.sk
Mon Apr 4 08:44:52 CEST 2011


Michael Van Canneyt  wrote / napĂ­sal(a):
>
>
> On Mon, 4 Apr 2011, LacaK wrote:
>
>> Hi,
>> This fix 
>> http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/packages/fcl-db/src/base/fields.inc?r1=17199&r2=17220 
>>
>> fixes mising call to TField.Validate (before data are written into 
>> record buffer) and adds also call to TField.DataChanged (after data 
>> are written)
>>
>> But It seems to me, that DataChanged is now called 2 times
>>
>> First in TDataSet descendants in SetFieldData method (see 
>> bufdataset.pas, dbf.pas, paradox.pp, meds.pp) and second in above 
>> mentioned place.
>>
>> So it would be good remove this call from TDataSet descendants. For 
>> example for bufdataset.pas:
>>
>> 1860   if not (State in [dsCalcFields, dsFilter, dsNewValue]) then
>> 1861     DataEvent(deFieldChange, Ptrint(Field));
>
> Hm. No, we'll remove the call from TField.
>

> There may be other descendants (AnyDac, Zeos and whatnot) that also 
> call DataEvent
> and OnValidate, and we cannot apply this change on them.
Yes it seems, that we must do it in this way.
(Although I do not understand why Borland introduces this strange behavior)

Then please move approprate code at least into 
TCustomBufDataset.SetFieldData
Thanks

Laco.




More information about the fpc-devel mailing list