4D フォームについて
フォームはデスクトップアプリケーションにおいて、データの入力・修正・印刷をおこなうためのインターフェースとなります。 フォームを使用することで、ユーザーはデータベースのデータをやり取りし、レポートを印刷します。 フォームを使用して、カスタムダイアログボックスやパレット、そのほかのカスタムウィンドウを作成します。
また、以下の機能により、フォームは他のフォームを含むことができます:
フォームを作成する
4Dフォームの追加や変更は、以下の要素を使っておこないます:
- 4D Developer インターフェース: ファイル メニューまたは エクスプローラ ウィンドウから新規フォームを作成できます。
- フォームエディター: フォームの編集は フォームエディター を使っておこないます。
- JSON コード: JSON を使ってフォームを作成・設計し、フォーム ファイルを 適切な場所 に保存します。 例:
{
"windowTitle": "Hello World",
"windowMinWidth": 220,
"windowMinHeight": 80,
"method": "HWexample",
"pages": [
null,
{
"objects": {
"text": {
"type": "text",
"text": "Hello World!",
"textAlign": "center",
"left": 50,
"top": 120,
"width": 120,
"height": 80
},
"image": {
"type": "picture",
"pictureFormat": "scaled",
"picture": "/RESOURCES/Images/HW.png",
"alignment":"center",
"left": 70,
"top": 20,
"width":75,
"height":75
},
"button": {
"type": "button",
"text": "OK",
"action": "Cancel",
"left": 60,
"top": 160,
"width": 100,
"height": 20
}
}
}
]
}
プロジェクトフォームとテーブルフォーム
2つのカテゴリーのフォームが存在します:
-
プロジェクトフォーム - テーブルに属さない独立したフォームです。 このタイプのフォームは、おもにインターフェースダイアログボックスやコンポーネントを作成するのに使用されます。 プロジェクトフォームを使用してより簡単に OS標準に準拠するインターフェースを作成できます。
-
テーブルフォーム - 特定のテーブルに属していて、それによりデータベースに基づくアプリケーションの開発に便利な自動機能の恩恵を得ることができます。 通常、テーブルには入力フォームと出力フォームが別々に存在します。
フォームを作成する際にフォームカテゴリーを選択しますが、後から変更することも可能です。
フォームのページ
各フォームは、少なくとも 2つのページで構成されています:
- ページ1: デフォルトで表示されるメインページ
- ページ0: 背景ページ。このページ上に置かれたオブジェクトはすべてのページで表示されます
1つの入力フォームに複数のページを作成することができます。 一画面に納まりきらない数のフィールドや変数がある場合は、これらを表示するためにページを追加することができます。 複数のページを作成すると、以下のようなことが可能になります:
- もっとも重要な情報を最初のページに配置し、他の情報を後ろのページに配置する。
- トピックごとに、専用ページにまとめる。
- 入力順を設定して、データ入力中のスクロール動作を少なくしたり、または不要にする。
- フォーム要素の周りの空間を広げ、洗練された画面をデザインする。
複数ページは入力フォームとして使用する場合にのみ役立ちます。 印刷出力には向きません。 マルチページフォームを印刷すると、最初のページしか印刷されません。
フォームのページ数には制限がありません。 フォーム内の複数ページ上に同じフィールドを何度でも表示することができます。 しかし、フォームのページ数が多くなるほど、フォームの表示に要する時間が長くなります。
マルチページフォームには、1つの背景ページと複数の表示ページが存在します。 背景ページ上に置かれたオブジェクトはすべての表示ページに現れますが、それらのオブジェクトの選択や編集は背景ページでのみ可能です。 複数ページフォームでは、ボタンパレットを背景ページに置くべきです。 また、ページ移動ツールオブジェクトを背景ページに配置し、ユーザーに提供する必要があります。
継承フォーム
4D では "継承フォーム" を使用することができます。これはつまり、フォームA の全オブジェクトが フォームB で使用可能であるということです。 この場合、フォームB は フォームA からオブジェクトを "継承" します。
継承フォームへの参照は常にアクティブです。そのため、継承フォームの要素が変更されると (たとえば、ボタンスタイル)、この要素を使用する全フォームが自動的に変更されます。
テーブルフォームおよびプロジェクトフォームの両方を継承フォームとして使用できます。 ただし、継承フォームに含まれる要素は、異なるデータベーステーブルでの使用に対応していなければなりません。
フォームが実行されると、オブジェクトがロードされ、次の順序で組み立てられます:
- 継承フォームの 0ページ
- 継承フォームの 1ページ
- 開かれたフォームの 0ページ
- 開かれたフォームのカレントページ
この順序により、フォームにおけるオブジェクトの 入力順 が決まります。
継承フォームの 0ページと 1ページだけが他のフォームに表示可能です。
継承フォームとして使用される場合、継承フォームのプロパティとフォームメソッドは使用されません。 他方、継承フォームに含まれるオブジェクトのメソッドは呼び出されます。
継承フォームを設定するには、他のフォームを継承するフォームにおいて、継承されたフォーム名 および 継承されたフォームテーブル (テーブルフォームの場合) プロパティを設定しなければなりません。
プロジェクトフォームを継承するには 継承されたフォームテーブル プロパティで \<なし>
を選択します (JSON の場合は " ")。
フォームの継承をやめるには、プロパティリストの 継承されたフォーム名 プロパティで \<なし>
オプション (JSONの場合は " ") を選択します。
任意のフォームで継承フォームを設定し、そのフォームを第3のフォームの継承フォームとして使用することができます。 再帰的な方法で各オブジェクトが連結されます。 4Dは、再帰的ループを見つけ出し (たとえば、[テーブル1]フォーム1 が [テーブル1]フォーム1 を継承フォームとして定義している、つまり自分自身を継承している場合)、フォームの連鎖を中断します。
プロパティ一覧
フォームタイプ - フォーム名 - 継承されたフォームテーブル - 継承されたフォーム名 - ウィンドウタイトル - 配置を記憶 - サブフォームとして公開 - 固定幅 - 最小幅 - 最大幅 - 固定高さ - 最小高さ - 最大高さ - 印刷設定 - 連結メニューバー - フォームヘッダー - フォーム詳細 - フォームブレーク - フォームフッター - メソッド - Pages