4D v16.3

LISTBOX DUPLICATE COLUMN

ホーム

 
4D v16.3
LISTBOX DUPLICATE COLUMN

LISTBOX DUPLICATE COLUMN 


 

LISTBOX DUPLICATE COLUMN ( {* ;} object ; colPosition ; colName ; colVariable ; headerName ; headerVar {; footerName ; footerVar} )  
引数   説明
演算子 in 指定時、 Object はオブジェクト名 (文字列) 省略時、 Object は変数
object  フォームオブジェクト in 複製したい列のオブジェクト名( * 指定時)、 または変数 ( * 省略時)
colPosition  倍長整数 in 新しく複製した列の位置
colName  文字 in 新しい列の名前
colVariable  配列, フィールド, 変数, Nil pointer in 列の配列変数またはフィールド、変数
headerName  文字 in 列のヘッダーのオブジェクト名
headerVar  整数変数, Nil pointer in 列のヘッダーの変数
footerName  文字 in 列のフッターのオブジェクト名
footerVar  変数, Nil pointer in 列のフッターの変数

説明   

LISTBOX DUPLICATE COLUMNコマンドは、 object* 演算子によって指定された列を、プログラムによって実行中のフォームにおいて複製します。(アプリケーションモード)

注: 列を複製する機能は以前の4D にもありましたが、デザインモードにおいてフォームエディターのコンテキストメニューの中にある列複製コマンドを使用することによってのみ可能、というものでした。

複 製元となる列においてプロパティリストやオブジェクト管理コマンド (OBJECT SET COLOR 等) を使用して設定されたスタイルオプション(サイズ、背景色、書式等)は、複製先の列にも反映されます。また、フォームのオブジェクトメソッド、スタイルと カラー配列やイベントなどといったものも複製されます。
しかしながら、データソース (リストボックスに定義されたソースにより、配列またはセレクション) に加えてスタイル配列、カラー配列は複製されません。列を複製した際には、デベロッパが新しい列にてそれらのデータを定義しなおさなければなりません。

object* 演算子を使用して複製する列を指定します。任意の * 演算子を渡した場合、 object 引数でオブジェクト名を文字列で指定します。省略時には object 引数で列変数を指定します。

注: このコマンドは階層リストボックスの最初の列を指定した場合には何もしません。

複製した列は、 colPosition 引数で指定した位置の一つ前に置かれます。 colPosition が列全体の総数より大きい場合、複製した列は最後の列の後ろに置かれます。

colName 引数と colVariable 引数には、オブジェクト名と、新しく複製された列の変数を渡します。

  • 配列型のリストボックスの場合、変数名は列に表示される配列です。動的なコンテキストにおいてはNil (->[]) ポインターを渡す事もできます(以下を参照の事)。
  • セレクション型のリストボックスの場合、 colVariable 引数で指定したフィールドまたは変数の値が列に表示されます。これはリストボックスに関連付けられたセレクションのレコードごとに評価された値となりま す。この型の内容をしようするためには、リストボックスの「データソース」プロパティがカレントセレクションか命名セレクションに設定されている必要があ ります。

繰り返しになりますが、オリジナルの列のデータソースまでは複製されないことにご注意ください。複製された列に対し、新たにソースとなる変数、配列、フィールドを設定してあげる必要があります。

headerNameheaderVariable 引数には、新たに作成する列のヘッダーのオブジェクト名と変数を渡します。同様に、footerName 引数と footerVariable 引数にオブジェクト名と変数を渡してあげることで新しい列のフッターを設定することもできます。 footerVariable 引数省略時には 4D はフォーム変数を割り当てます。

Note: オブジェクト名は、フォーム内において固有でなければなりません。colName 引数、headerName 引数、 footerName 引数などで渡す名前がこれまでに使用されていないことを確認して下さい。重複していた場合、複製は行われず、エラーが発生します。

このコマンドはフォーム表示中に使用される必要があります。通常、フォームの On Load イベント内か、ユーザーのアクションへの反応(On Clicked イベント) にて使用されます。

4D v14 R3以降、リストボックスカラムを動的に複製し、必要な変数(カラム、フッター、ヘッダー)の定義を4Dが自動的に行うようになりました。

これを可能にするため、LISTBOX DUPLICATE COLUMNcolVariable (配列型リストボックスのみ)、headerVarfooterVar においてNil (->[]) ポインターを引数として受け入れるようになりました。Nilポインターを渡してコマンドを実行すると、4Dは必要な変数を動的に作成します(詳細に関しては、ダイナミック変数 のセクションを参照して下さい)。

ヘッダー変数とフッター変数は常に特定のタイプで作成されるという点に注意して下さい(ヘッダーは倍長整数、フッターはテキスト)。反対に、カラム変数は作成時にタイプを指定することはできません。リストボックスはカラム変数に対して、異なるタイプの配列(テキスト配列、倍長整数配列、等々)を受け入れることができるからです。これはつまり配列のタイプを手動で設定しなければならないという事です(例題2を参照して下さい)。こういったタイプの指定は、配列に新しい要素を挿入するためにLISTBOX INSERT ROWS などのコマンドを呼び出す前に実行しなければなりません。その他には、 APPEND TO ARRAY を使用して配列の型を指定し、要素を挿入することができます。

以下のような配列型のリストボックスの中で、 "First Name" の列を複製して入力できるようにしたい場合:

ボタンのコードは以下のようになります:

 ARRAY TEXT(arrFirstNames2;Records in table([Members]))
 LISTBOX DUPLICATE COLUMN(*;"column2";3;"col2bis";arrFirstNames2;"FirstNameA";vHead2A)
 OBJECT SET TITLE(*;"FirstNameA";"Middle Name")
 EDIT ITEM(*;"col2A";0)

ボタンをクリックすると、リストボックスは以下のようになります:

ブール型のカラムを追加し、そのタイトルを変えます:

 C_POINTER($ptr)
 LISTBOX DUPLICATE COLUMN(*;"boolCol";3;"duplBoolCol";$ptr;"duplBoolHeader";$ptr;"duplBoolFooter";$ptr)
 colprt:=OBJECT Get pointer(Object named;"duplBoolCol")
 ARRAY BOOLEAN(colprt->;10)
 headprt:=OBJECT Get pointer(Object named;"duplBoolHeader")
 OBJECT SET TITLE(headprt->;"New duplicated column")



参照 

LISTBOX MOVE COLUMN

 
プロパティ 

プロダクト: 4D
テーマ: リストボックス
番号: 1273

 
履歴 

初出: 4D v14
変更: 4D v14 R3

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)