4D-jp 4D Japan Technical Support Team

ダイナミックフォームの入力順を簡単にカスタマイズ

2019-08-28
Vanessa Talbot

entryOrder

ダイナミックフォームの機能は、4D v16 R6で導入され、オブジェクト内でフォームを構築したり、テキストファイルからフォームをロードしたりすることで、その場でフォームを構築できます。これは、アプリケーションのニーズに合わせてフォームが頻繁に変更される世界ではとても便利です。

4Dでは、バイナリーフォームでもダイナミックフォームでも、入力順は典型的なz順に従います。4D v17 R6を使うと、z順に関連づけることなく入力順を定義できるようになりました。

フォーム定義の各ページには、z順に従って配置されたフォーム要素のリストを含む”object”属性があります。新しい”entryOrder”属性が追加され、独自のカスタマイズした入力順を指定できるようになりました。もしこの属性が未定義の場合は、4Dはz順(”objects”属性で定義された順序)を使います。

以下は、二つの入力フィールドとボタンを使ったダイナミックフォームの例です:

// Create inputs and button
$text1:=New object("type";"input"; "top";20; "left";140; "width";100; "height";18)
$text2:=New object("type";"input"; "top";20; "left";20; "width";100; "height";18)
$button:=New object("type";"button"; "text";"OK"; "top";60; "left";140; "width";100; "height";20)

// Create entry order collection
$entryOrder:=New Collection("text2";"text1")

// Create page with form objects and entry order
$page:=New object("objects";New object("text1";$text1; "text2";$text2; "button";$button); "entryOrder";$entryOrder)

// Create form
$form:=New object("pages"; New collection(Null;$page); "windowTitle";"My form"; "rightMargin";20; "bottomMargin";20)

// Load the form
$w:=Open 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"
			]
		}
	]
}

リンク