Object set enterableをリストフォームで使うと他の行の表示が消える

福本と申します。
初めての投稿です。よろしくお願いいたします。

4D ver.12で作成していたプログラムをver.17に移行しているのですがサブフォームで色々と問題が起きていて困っています。

中でも条件によってフィールドの入力を可・不可を切り替えている処理があるのですが、OBJECT SET ENTERABLEを使うと表示がおかしくなってしまいます。

症状を確認していただけるよう単純化したサンプルを添付しました。

http://forums.4d.com/4DBB_Main/x_User/27093007/files/27132270.zip

これはリスト形式で表示されたレコードをインラインでデータ編集し、'price’が0の場合’name’を編集不可能にするというものです。

3つのレコードが登録されているのですが、各行の各フィールドをクリックしてみてください。フィールドが編集状態になるとそれ以外のレコードのname欄が消えてしまいます。クリックする順番により挙動が変わります。priceが0のレコードから別のレコードが編集状態になると発生する模様です。

[]27132276;“Your comment here…”[/]

[]27132278;“Your comment here…”[/]

このサンプルではメインフォームですが、実際のプログラムではサブフォーム内使っています。サブフォームの場合また挙動が違う場合があるのでメインフォームではうまくいってもサブフォームではダメな場合もあります。

これは4Dのバグではないかと思います。データ自体は消えていないのですが、これでは納品できません。
なんとか回避する方法はないでしょうか?

こんにちは。
データベース拝見しました。

確かにこちらのサンプルですと、Priceが0のレコードをクリックした場合、
他の行が消えてしまいますね。

こちらでいくらか検証してみましたが、リストフォームのフォームメソッド内の、
OBJECT SET ENTERABLE

OBJECT SET ENABLED
に書き換えると、他の行が消えることなく、Priceが0の行のみが入力不可になるようです。

リストフォームをサブフォームに入れて試してみましたが、こちらでもうまく動きます。

いかがでしょうか。

よろしくお願いします。 :pray:

TESHIMA様

情報をありがとうございました。
おっしゃる通り、ENABLEDの方で目的の動作になりました。
将来のバージョンでも保障されるか不安なのですが、とりあえず問題を回避することができました。
ありがとうございました!!!