1

本质上,这就是我所面临的:

  1. 我想修改 InventTrans 表单
  2. 默认情况下,它将整个 InventTrans 数据源设置为 AllowEdit = No
  3. 我想在一个新的枚举字段(NoYes 类型)上启用编辑

我应该将 InventTrans 数据源设置为 AllowEdit = Yes,然后痛苦地将数据源中的 40 多个字段更改为 AllowEdit = No,还是有办法以编程方式遍历数据源的字段并按名称设置此属性?(请说有,或者同样简单的方法来做到这一点!)

提前致谢!

4

2 回答 2

6

This is how I would try to disable editing to all fields:

DictTable    dictTable;
DictField    dictField;
int          fldCnt;
;
dictTable = new DictTable(tablenum(InventTrans));
for (fldCnt = 1; fldCnt <= dictTable.fieldCnt() ; fldCnt++)
{
    dictField = new DictField(tablenum(InventTrans), dictTable.fieldCnt2Id(fldCnt));
    info(strfmt("%1", dictField.id(),dictField.name()));
    InventTrans_DS.object(dictField.id()).allowEdit(false);
}

EDIT: Better approach to iterate through form's DS'es fields only:

DictTable           dictTable;
DictField           dictField;
int                 fldCnt;
QueryBuildFieldList qBFL;
;
qBFL = InventTrans_DS.query().dataSourceTable(tablenum(InventTrans)).fields();
for (fldCnt = 1; fldCnt <= qBFL.fieldCount() ; fldCnt++)
{
    dictField = new DictField(tablenum(InventTrans), qBFL.field(fldCnt));
    info(strfmt("%1 %2 ", dictField.id(),dictField.name()));
    if(InventTrans_DS.object(qBFL.field(fldCnt))) //exception recVersion for example
    {
        InventTrans_DS.object(qBFL.field(fldCnt)).allowEdit(false);
    }
}
于 2012-08-09T05:09:37.343 回答
0

我有一个场景,我想允许在 InventJournalTrans 表单中编辑 ItemID,基于 ANOTHER 表单中的枚举值。这可能吗?

可以使用 args() 类(parm 方法)来获取复选框的值吗?以及在活动()中的以下条件?
我的代码:

public int active()
{
int ret;
;

ret = super();

if([datasource table name].[Column 1 field name] == [Column1 value to
deactivate Column 3])
{
[datasource table name]_ds.object(fieldNum([datasource table name],
[Column 1 field name])).allowEdit(false);
}
else
{
[datasource table name]_ds.object(fieldNum([datasource table name],
[Column 1 field name])).allowEdit(true);
}

return ret;
}
于 2016-02-23T13:01:43.113 回答