Am 04.04.2011 07:29, schrieb Michael Van Canneyt:


On Mon, 4 Apr 2011, LacaK wrote:

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.

Thanks. For example the code in tmsebufdataset:
"
procedure tmsebufdataset.setfielddata(field: tfield; buffer: pointer);

var
 po1: pointer;
 datasize: integer;
begin
 field.validate(buffer);
 po1:= getfieldbuffer(field,buffer = nil,datasize);
 if buffer <> nil then begin
  move(buffer^,po1^,datasize);
 end
 else begin
  fillchar(po1^,datasize,0);
 end;
 fieldchanged(field);
end;
"

Martin
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to