Tips

リストボックスのセルの入力属性をコントロール

日付2013/09/02
ID13-009
バージョン13
プラットフォームWindows, Mac

4D v12以前では、リストボックスの特定のセルを入力不可にするような処理を行うためには、OBJECT SET ENTERABLEを使う必要がありました。しかし4D v13では新しい仕様が追加され、On Before Data Entry イベントで$0から-1を返すことで入力不可状態にすることができます。このことは、ランゲージリファレンスの「リストボックスオブジェクのの管理」で「入力の管理」で解説されています。

参考資料:リストボックスオブジェクトの管理

この記述をもとに、以前の方法と同じ例題に対応してみました。この例題では、リストボックスのオブジェクトメソッドによって、1行目の値を使い2行目のセルの入力属性をコントロールしています。

コードとフォームデザイン

上記のフォームを表示して動作させたところが、下記のスクリーンショットです。必要なフォームイベントが発生するように、リストボックスのフォームイベントプロパティを有効にしておくことを忘れないでください。

テスト状況

上記のテストでは、オブジェクトメソッドによって2行目の2列目のセルがロックされて書き換えができなくなっています。他のセルは書き換え可能です。上記でOFFとなっているセルの値を別の値に書き換えることで、セルのロックを解除することもできます。

実際のコードは次のとおりです。

Case of 

   : (Form event=On Before Data Entry)

      C_LONGINT($column;$row)
      LISTBOX GET CELL POSITION(*;"List_Box";$column;$row)
      If ($column=2)
         If (Column1{$row}="OFF")
            $0:=-1
         End if 
      End if 

End case