| 4D View v15PV ADD DYNAMIC FIELDS | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D View v15
 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 TEXT($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
									PV ADD DYNAMIC ARRAYS
									
									PV CLEAR DYNAMIC COLUMNS
									
									PV FIELD TO CELLS
									
									PV SET CELL FIELD
									
	プロダクト: 4D View
	テーマ: PVセルの値
	番号: 
        15900
        
        
        
	
	初出: 4D View 6.8
	4D View ( 4D View v15)
	
	
	
	
	
	
	
 コメントを追加
コメントを追加