On 5/4/2011 04:38, michael.vancann...@wisa.be wrote:


On Tue, 5 Apr 2011, LacaK wrote:




--or--
introduce any new method (ValidateFieldData ? ;-))) and let tdatsset descendants use it:
{$IFDEF FPC}
ValidateFieldData(Field: TField; Buffer: Pointer);
{$ENDIF}

--or--
some smarter solution ?

The whole code, which is repeated (and can be put in one place) is:

if not (State in [dsEdit, dsInsert, dsFilter, dsCalcFields]) then
begin
  DatabaseErrorFmt(SNotEditing,[Name],self);
  exit;
end;
if (Field.FieldNo>0) and not (State in [dsSetKey, dsFilter]) then
begin
if ReadOnly then DatabaseErrorFmt(SReadOnlyField, [Field.DisplayName], Self);
  Field.Validate(Buffer);
end;

You are right in your dislike.

I will create a 'BeforeSetFieldData' in TDataset and put the code in there,

I still think that is overkill: adding a method to replace just two lines of code.

Anyway, if you decide this way, consider another name. Sometimes is to be called in the "middle" of SetFieldData

and the same for 'AfterSetFieldData' with the OnChange code.


This one is a bit more odd since currently only bufdataset will use it (or do you plan to replace the existing code in descendants?)

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

Reply via email to