4D View v16

PV ADD DYNAMIC FIELDS

ホーム

 
4D View v16
PV ADD DYNAMIC FIELDS

PV ADD DYNAMIC FIELDS 


 

PV ADD DYNAMIC FIELDS ( area ; master ; tables ; fields ; methods ) 
引数   説明
area  倍長整数 in 4D View エリア
master  整数 in マスターテーブル番号
tables  整数配列 in テーブル番号の配列
fields  整数配列 in フィールド番号の配列
methods  文字配列 in コールバックメソッドの配列

説明   

PV ADD DYNAMIC FIELDSコマンドは、配列tablesfields で指定した各フィールドの値に対応するひとまとまりの行をareaに追加します。このフィールドはmasterで定義したテーブルのカレントセレクションにリレートしており、A1 セルより行の追加を開始します。areaにダイナミックカラムが既に定義されている場合、新しいデータは最初に利用可能なカラムの1 行目より挿入されます。これらのフィールドの値は、対応するセルを用いて、直接4D View から修正することができます。

結果は(列、および配列tablesfieldsmethods の要素として)、常に縦方向に表示されます。

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 メソッドおよびフィールドの値は4D View エリアと同じプロセスで定義しなくてはなりません。
  • 4D の「ユーザ」モードと4D View のプラグインウインドウとの間で、ダイナミックなデータ更新は行えません。4D の「ユーザ」モードで行われた修正内容を4D View ウインドウに反映するには、PV REDRAW コマンドを使用してウインドウを再描画する必要があります(4D コマンドを用いて行った修正は4D View エリアに自動的に反映されます)。

例題  

この例題では、入力フォームに組み込まれた入力テーブルについて説明します(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

 
ARTICLE USAGE

4D View ( 4D View v16)