4D View v14PV ADD DYNAMIC FIELDS |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D View v14
PV ADD DYNAMIC FIELDS
|
PV ADD DYNAMIC FIELDS ( area ; master ; tables ; fields ; methods ) | ||||||||
引数 | 型 | 説明 | ||||||
area | 倍長整数 |
![]() |
4D View エリア | |||||
master | 整数 |
![]() |
マスターテーブル番号 | |||||
tables | 整数配列 |
![]() |
テーブル番号の配列 | |||||
fields | 整数配列 |
![]() |
フィールド番号の配列 | |||||
methods | 文字配列 |
![]() |
コールバックメソッドの配列 | |||||
PV ADD DYNAMIC FIELDSコマンドは、配列tables とfields で指定した各フィールドの値に対応するひとまとまりの行をareaに追加します。このフィールドはmasterで定義したテーブルのカレントセレクションにリレートしており、A1 セルより行の追加を開始します。areaにダイナミックカラムが既に定義されている場合、新しいデータは最初に利用可能なカラムの1 行目より挿入されます。これらのフィールドの値は、対応するセルを用いて、直接4D View から修正することができます。
結果は(列、および配列tables、fields 、methods の要素として)、常に縦方向に表示されます。
Note: PV ADD DYNAMIC ARRAYS コマンドを使用して、4D View エリアにダイナミック配列エリアが既に挿入されている場合、そのエリアは削除されダイナミックフィールドで置き換えられます。
すべてのカラムに対し、この処理はリレートによりmaster テーブルに関連付けられた配列に適用されます。リレートはマスター配列から表示される配列のフィールドへの自動リレートでなければいけません。請求書と明細行に関する従来の例題では、行の配列のフィールド内容を回復したり変更することができますが、明細行配列を元にしてセレクションにリレートしている請求書テーブル(マスターテーブル)の内容も回復することができます。
各コールバックメソッドは以下の6 つの引数を受け取ります。:
$1: エリア
$2: 列番号
$3: 配列タイプ
$4: この配列へのポインタ
$5: ダイナミックエリアの最初の行
$6: このエリアに表示される行数
Note: データベースをコンパイルする予定であれば、使用しない引数がある場合でも、これらの引数を必ず宣言しなくてはなりません。
$5と$6: ユーザーがarea中で行 (レコード) をスクロールすると、新しく表示された行のみが再描画されます。$5と$6引数により、どの行が対象となるか知ることができます。
開発者は、このコールバックメソッドの配列をすべて埋めてください。4D View はこの配列を使用して、計算後のカラムに代入します。戻り値($0)はありません。
PV ADD DYNAMIC FIELDS は、引数として渡された各フィールドとのダイナミックリンクを維持します。この結果、4D View エリアで値が変更されると、各フィールドに対してその変更が反映されます(この逆も同様)。
Note:
この例題では、入力フォームに組み込まれた入力テーブルについて説明します(4D Viewを使用すると、より簡単に行えます)。それぞれの肩書き(リンク先テーブル)と各交のイニシャル(計算後のカラム)を用いて、現在の顧客にリレートしている連絡先の各フィールドを変更します。
ARRAY INTEGER($TablesArray;4) `テーブル番号
ARRAY INTEGER($FieldsArray;4) `フィールド番号
ARRAY STRING(30;$MethodsArray;4) `コールバックメソッド名
`列1: 連絡先名
$TablesArray{1}:=Table(->[Contacts])
$FieldsArray{1}:=Field(->[Contacts]ContactName)
$MethodsArray{1}:=""
`列2: 連絡先名前
$TablesArray{2}:=Table(->[Contacts])
$FieldsArray{2}:=Field(->[Contacts]ContactFirstname)
$MethodsArray{2}:=""
`列3: 敬称 (リンクしたテーブル)
$TablesArray{3}:=Table(->[Titles])
$FieldsArray{3}:=Field(->[Titles]Label)
$MethodsArray{3}:=""
`列4: 注文数/トータル (計算列)
$TablesArray{4}:=0
$FieldsArray{4}:=Is text   `結果
$MethodsArray{4}:="CallMethod"
RELATE MANY([Clients]Code)   `連絡先を取得
PV ADD DYNAMIC FIELDS(Area;Table(->[Contacts]);$TablesArray;$FieldsArray;$MethodsArray)
CallMethod プロジェクトメソッドのコードは以下の通り:
C_LONGINT($1) `4D View エリア
C_LONGINT($2) `列番号
C_LONGINT($3) `配列の型
C_POINTER($4) `この配列へのポインター
C_LONGINT($5) `ダイナミックエリアの先頭行
C_LONGINT($6) `エリアに表示可能な行数
GOTO SELECTED RECORD([Contacts];$5)
For($i;1;$6)
$4->{$i}:=Substring([Contacts]ContactFirstname;1;1)+Substring([Contacts]ContactName;1;1)
NEXT RECORD([Contacts])
End for
プロダクト: 4D View
テーマ: PVセルの値
番号:
15900
初出: 4D View 6.8
PV ADD DYNAMIC ARRAYS
PV CLEAR DYNAMIC COLUMNS
PV FIELD TO CELLS
PV SET CELL FIELD
4D View ( 4D View v11.4)
4D View ( 4D View v12)
4D View ( 4D v13)
4D View ( 4D View v14 R2)
4D View ( 4D View v14)
4D View ( 4D View v14 R3)
4D View ( 4D View v14 R4)