1

基本的に、これは私が直面していることです:

  1. InventTransフォームを変更したい
  2. デフォルトでは、InventTransデータソース全体がAllowEdit=Noに設定されています。
  3. 1つの新しい列挙型フィールドで編集を有効にしたい(NoYesタイプ)

InventTransデータソースをAllowEdit=Yesに設定してから、データソースの40以上のフィールドをAllowEdit = Noに変更する必要がありますか、それともプログラムでデータソースのフィールドを反復処理してこのプロパティを名前で設定する方法はありますか?(これを行うための、または同様に簡単な方法があると言ってください!)

前もって感謝します!

4

2 に答える 2

6

これは、すべてのフィールドの編集を無効にしようとする方法です。

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);
}

編集:フォームのDSフィールドのみを反復処理するためのより良いアプローチ:

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

ANOTHERフォームの列挙値に基づいて、InventJournalTransフォームのItemIDの編集を許可したいシナリオがあります。これは可能ですか?

args()クラス(parmメソッド)を使用してチェックボックスの値をフェッチできますか?active()の以下の条件と一緒に?
私のコード:

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 に答える