Joost van der Sluis escreveu:
On Wed, 2010-05-19 at 14:14 -0300, Luiz Americo Pereira Camara wrote:
I'm just confused by the exception that is raised ("autoinc fields are
read only") when trying to set a value and by the code in the
TAutoIncField constructor that initializes FReadOnly to true.
Attached is a patch that removes this initialization.
That's indeed strange. And it would mean that those fields are
effectively readonly. I think they shoudn't be. (But to be sure, if it
would have been my design, there woudn't be such a thing as an autoinc
field.)
I see two choices: make it possible to edit autoinc fields, or make
ReadOnly true.
Maybe we should choose the second option, for Delphi-compatibility?
The funny thing is that, currently, fpc has the same behavior as Delphi,
i.e., the field is effectively read only (fpc and Delphi raise the same
exception when trying to set the value) but the ReadOnly property is
false. Also, in both CanModify is true.
IMO this is a Delphi bug (Can someone test on > Delphi 7?). A quote from
Delphi help:
property ReadOnly: Boolean;
Description
Set ReadOnly to true to prevent a field from being modified. In a data
grid, tabbing from field to field skips over ReadOnly fields.
To learn whether a field can be modified, use the CanModify property
instead. CanModify reflects not only the value of the ReadOnly property,
but also any restrictions imposed by the underlying dataset.
[AutoIncField]
Note: Auto-incrementing fields are a function of the database
back-end. An application should not attempt to set a field value for an
autoincrement field (with or without a TAutoIncField object).
Luiz
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel