Often it is useful to be able to access the datasource field properties on a form through X++. This is essential for modifying the allowEdit property at run-time for example.
The following code can be used to set the allowEdit of the InventTable.ItemName field on a form.
FormDataObject fldItemName; boolean allowEdit = false; //This would set according to some criteria fldItemName = inventTable_DS.object(fieldNum(InventTable,ItemName)); fldItemName.allowEdit(allowEdit);
Download this project for an example form showing this technique.
To prevent editing code when you add fields to the table, call the fieldproperties using the dictionary classes:
FormDataObject  fldItemName;
boolean         allowEdit = false; //This would set according to some criteria
SysDictTable    dictTable = new SysDictTable(this.table());
FieldId         currentFieldId;
;
for (currentFieldId = dictTable.fieldNext(0); currentFieldId; currentFieldId = dictTable.fieldNext(currentFieldId))
{
    fldItemName = this.object(currentFieldId);
    if (fldItemName)
        fldItemName.allowEdit(allowEdit);
}
Code called from a method on the datasource itself. Check the fldItemName for null, System fields (eg ‘ModifiedBy’) are not present in the datasource, but is in the table.
