4D リストボックス 列の移動をできなくしたい

リストボックス 列の移動をできなくしたい

フォームにリストボックスを配置して列数を2以上にすると、実行モードではユーザが列を移動することができます。実行モードでリストボックスの列(ヘッダ部分)をドラッグして列の順番を変えることができる、という機能です。

プログラマとしては何もコードを書かずにこの機能を提供できるのはいいことですが、この機能を抑制したい時があります。つまりユーザに列の入れ替えをしてほしくないケースです。

例えば、次の例では、勘定科目の金額は借方金額の方が左の列、貸方金額が右の列に並べました。会計の世界では「借方金額は左」と決まっているからです。ここでユーザは列をドラッグして貸方金額を左に移動させることができてしまいます。これは抑止したいところです。

図1 借方金額は左
図2 ドラッグして移動中
図3 借方と貸方が入れ替わってしまった!

対策:

リストボックスのプロパティで「ドラッグしない列数」に「列数」と同じ数値を入力します。数値が異なる場合は、左からN個目までが移動できない列になります。

http://doc.4d.com/4Dv16/4D/16.1/List-box-specific-properties.300-3373463.ja.html

プロパティリスト
図 リストボックスを選択して表示したプロパティリストの一部

現在の「ドラッグで移動しない列数」は次のコマンドで取得できます。

LISTBOX Get static columns

「ドラッグで移動しない列数」をセットするコマンドは次です。

LISTBOX SET STATIC COLUMNS

参考情報:

スクロールしない列

リスボックスの横スクロールが有効になっている時に、横スクロールすると左側にあった列は左に隠れてしまいます。横スクロール時に隠れて欲しくない列、つまり左側にいつも表示していたい列を指定することができます。リストボックスの「スクロールしない列数」という機能です。

フォームエディタで、「リストボックス」のプロパティリストの「スクロールしない列数」に数値を入力することで指定します。