ダイナミックフォームのパワーは、4D v16 R6で導入され、オブジェクトに組み込んだり、テキストファイルから読み込んだりして、その場でフォームを構築することができるようになりました。これは、アプリケーションのニーズに合わせてフォームが頻繁に変更される世界では、非常に便利な機能です。
4Dでは、バイナリーフォームもダイナミックフォームも、入力順序は通常、zオーダーに従います。4D v17 R6では、必ずしもzオーダーに関連しない入力順序を定義することができるようになりました。
フォーム定義の各ページには、zオーダーに従って配置されたフォーム要素のリストを含む “objects “属性があります。新しい“entryOrder” 属性が追加され、独自のカスタマイズされた入力順序を指定できるようになりました。この属性が未定義の場合、4Dはzオーダー(”objects “属性で定義されたオーダー)を使用します。
以下は、2つの入力フィールドとボタンを持つダイナミックフォームの例です。
// Create inputs and button
$text1:= ("type"; "input"; "top";20; "left";140; "width";100; "height";18) := ("type"; "input";「top」;20; "left";20; "width";100; "height";18) New object
$text2New object
$button := ("type"; "button"; "text"; "OK"; "top";60; "left";140; "width";100; "height";20) := ("text2"; "text1") := ("objects"; ("text1"; ; "text2"; ; "button"; ); "entryOrder";New object(ページ) )
// Create entry order collection
$entryOrderNew Collection
// Create page with form objects and entry order
$pageNew objectNew object$text1$text2$button$entryOrder := ("pages"; ( ; ); "windowTitle"; "My form"; "rightMargin";20; "bottomMargin";20) := ( )
// Create form
$formNew object New collectionNull$page
// Load the form
$wOpen form window$form
、 (DIALOG$form)
と表すことができる。
{
"pages": [
null,
{
"objects": {
"text1": {
"type": "input",
"top": 20, "left": 140,
"width": 100, "height": 18,
"events": ["onClick"]
},
"text2": {
"type": "input",
"top": 20, "left": 20,
"width": 20, "height": 18,
"events": ["onClick"]
},
"button": {
"type": "button",
"text": "OK",
"top": 60, "left": 140,
"width": 20, "height": 20,
"events": ["onClick"]
}
},
"entryOrder": [
"text2",
"text1"
]
}
]
}
