4D WritePro インターフェース
4D WritePro インターフェースは、エンド ユーザーが 4D Write Proドキュメントを簡単にカスタマイズできるパレットを提供します。
4D のデベロッパーは、これらのパレットをアプリケーションに簡単に実装することができます。 それにより、エンドユーザーは、フォントやテキストの揃え方向、ブックマーク、表レイアウト、フレームなど、4D Write Pro のプロパティをすべて管理することができます。
インターフェースのマニュアルについては、4D デザインリファレンス の 4D Write Pro エリアのドキュメント を参照ください。
表ウィザードの設定に関するドキュメントは以下のとおりです。
表ウィザード
表ウィザードは、コンテキスト、データソース、およびフォーミュラを使用した、データベースのデータに基づく表組みの作成をさらに簡素化します。
エンドユーザーがアクセスできる表ウィザードは、4D デベロッパーが設定し提供するテンプレートをロードします。 これにより、デベロッパーはユーザーの特定のユースケースやビジネス要件に応じてテンプレートをカスタマイズすることができます。
表ウィザードには、デフォルトのテンプレートおよびテーマが用意されており、デベロッパーはそれらを、アプリケーションで必要とされる内容に適合させることができます。
アプリケーションに表ウィザードを実装するために 、デベロッパーはテンプレートファイルを作成し、設定することができます。
WP表ウィザードのインターフェース
ユーザーは、4D Write Pro インタフェースツールバーとサイドバーの "表を挿入" メニューボタンから表ウィザードダイアログを開きます。
このインターフェースで、ユーザーは最初のドロップダウンリストからテンプレートまたはテーブルを選択し、2番目のドロップダウンリストからテーマを選択します。
列について:
テンプレートまたはテーブルの選択に応じて、テンプレートに保存されているフィールドのリストが表示されます (BLOB およびオブジェクト型は自動的に除外されます)。 表の列として表示させたいフィールドは、フィールド名の左にあるチェックボックスで選択します。また、表示する列の順序はフィールドをドラッグしてリスト内を移動させることで変更することができます。
行について:
表ウィザードでは、ヘッダー行と追加の行の数 (それぞれ 0~5) を定義したり、ブレーク行 (小計行) を繰り返し行の上または下に設定したり、キャリーオーバー行 の表示/非表示を選択したりすることもできます。
表示について:
ユーザーは、ドロップダウンリストから希望するオプションを選択することで、好みのズームレベルを調整し、ラジオボタンを使ってフォーミュラまたはデータを表示し、チェックボックスを使って水平ルーラーを表示するかどうかを選択します。
表の作成とカスタマイズが完了したら、挿入 ボタンをクリックして、WPドキュメントに表組みを追加することができます。
ドキュメントに表が統合されると、ユーザーはそのスタイルをカ スタマイズできます。 ツールバーやサイドバーの書式設定ツールはすべて利用可能です。
WP表ウィザードのテンプレートの設定
テンプレートの設定には以下が含まれます:
- テンプレートファイル: テーブルとフィールドを定義し、アプリケーションに適合したフォーミュラを用意します。
- トランスレーションファイル: テーブル、フィールド、フォーミュラの翻訳名を指定します。
- テーマファイル: グラフィックスタイルとテーマをデザインしカスタマイズします。
表ウィザードを設定するにあたって、これら 3種類のファイルにはそれぞれ明確な役割がありますが、いずれも必須ではありません。
テンプレートファイル
テンプレートファイルを使って、以下のことが定義できます:
- 表のデータソースとして使用されるエンティティセレクションを返すフォーミュラ
- ブレーク行のフォーミュラ (ブレーク行を挿入できる場合)
- 表の列として使用できるデータクラス属性
- ブレーク行、キャリーオーバー行、追加の行において、コンテキストメニューから選択可能なフォーミュラ
現在の実装 (4D v20 R2) では、ブレーク行、データソース、コンテキストメニューに使用されるフォーミュラは、ホストデータベースのメソッドの呼び出しをサポートしていません。 この制限は次のバージョンで外される予定です。
テンプレートファイルはプロジェクトの "Resources
/4DWP_Wizard/Templates" フォルダーに保存する必要があります。
JSON形式のテンプレートファイルには、以下の属性が含まれます:
属性 | 型 | 必須 | 説明 |
---|---|---|---|
tableDataSource | Text | ○ | 表のデータソースのフォーミュラ |
columns | Collection | ○ | 表の列のコレクション |
columns.check | Text | ○ | 表ウィザードであらかじめチェックされている場合は true。 列のチェックをあらかじめ外しておく場合は false。 |
columns.header | Text | ○ | ユーザーに提示する表示名 |
columns.source | Text | ○ | フォーミュラ |
breaks | Collection | ブレークオブジェクトのコレクション。 ブレークの順番は重要です。 この順番は、ドキュメント内でブレーク行が繰り返し行の上にある場合の順番に対応します。 | |
breaks.label | Text | ○ | ユーザーに提示する表示名 |
breaks.source | Text | ○ | フォーミュラ |
breakFormulas | Collection | ブレーク行に適用可能なフォーミュラオブジェクトのコレクション | |
breakFormulas.label | Text | ○ | ユーザーに提示する表示名 |
breakFormulas.source | Text | ○ | フォーミュラ |
bcorFormulas | Collection | 下部キャリーオーバー行に適用可能なフォーミュラオブジェクトのコレクション | |
bcorFormulas.label | Text | ○ | ユーザーに提示する表示名 |
bcorFormulas.source | Text | ○ | フォーミュラ |
extraFormulas | Collection | 追加の行に適用可能なフォーミュラオブジェクトのコレクション | |
extraFormulas.label | Text | ○ | ユーザーに提示する表示名 |
extraFormulas.source | Text | ○ | フォーミュラ |
もし、4Dランゲージがフランス語に設定された環境で実行される可能性があるのであれば、ランゲージ設定に関わらず正しく解釈されるよう、フォーミュラに トークン を使用するようにしてください。
例題
JSONファイルの簡単な一例を以下に示します:
{
"tableDataSource": "ds.People.all().orderBy(\"toCompany.name asc, continent asc, country asc, city asc\")",
"columns": [{
"check": true,
"header": "Firstname",
"source": "This.item.firstname"
}, {
"check": true,
"header": "Lastname",
"source": "This.item.lastname"
}, {
"check": true,
"header": "Salary",
"source": "String(This.item.salary;\"###,###.00\")"
}
],
"breaks": [{
"label": "Company",
"source": "This.item.toCompany.name"
}
],
"breakFormulas": [{
"label": "Company",
"source": "This.item.toCompany.name"
}, {
"label": "Sum of salaries",
"source": "String(This.breakItems.sum(\"salary\"); \"###,###.00\")"
}
],
"bcorFormulas": [{
"label": "Sum of salaries",
"source": "String(This.tableData.sum(\"salary\"); \"###,###.00\")"
}
],
"extraFormulas": [{
"label": "Sum of salaries",
"source": "String(This.tableData.sum(\"salary\"); \"###,###.00\")"
}
]
}
トランスレーションファイル
トランスレーションファイルは、テンプレート、テーマ、テーブル、フィールド、およびフォーミュラの翻訳名を指定します。 これらのファイルはプロジェクトの "Resources
/4DWP_Wizard/Translations" フォルダーに追加します。
各トランスレーションファイルには、対応する言語コード (英語なら "en"、日本語なら "ja" など) のファイル名を付けます。
JSON形式のトランスレーションファイルには、以下の属性が含まれます:
属性 | 型 | 必須 | 説明 |
---|---|---|---|
テーブル | Collection | 翻訳されたテーブルオブジェクトのコレクション | |
fields | Collection | 翻訳されたフィールドオブジェクトのコレクション | |
formulas | Collection | 翻訳されたフォーミュラオブジェクトのコレクション | |
fileNames | Collection | 翻訳された fileNameオブジェクトのコレクション (テーマとテンプレート名に適用) |
これら属性に含まれるコレクションの各オブジェクト要素は以下の属性を含みます:
属性 | 型 | 必須 | 説明 |
---|---|---|---|
original | Text | ○ | 翻訳の対象となる原文 |
translation | Text | ○ | 原文を翻訳したもの |
これらの属性を定義することで、原文と翻訳されたコンテンツ間の適切な対応が確保されます。
テンプレート名やフォーミュラ名 (ブレーク行、キャリーオーバー行、追加の行) がトランスレーションファイルに存在する場合、表ウィザードではその翻訳が表示されます。 また、トランスレーションファイル内で定義されたテーブルだけが表ウィザードに (翻訳されて) 表示されます。
ユーザーがインターフェースでテーブルを選択したときには、トランスレーションファイルは追加の役割を果たします。 具体的には、ユーザーに提案されるテーブルやフィールドをフィルターします。 たとえば、テーブルID を非表示にするなど、この動作は SET TABLE TITLES
や SET FIELD TITLES
コマンドに似ています。
例題
{
"tables": [{
"original": "People",
"translation": "従業員"
}
],
"fields": [{
"original": "lastname",
"translation": "名字"
}, {
"original": "firstname",
"translation": "名前"
}, {
"original": "salary",
"translation": "給与"
}, {
"original": "company",
"translation": "会社"
}
],
"formulas": [{
"original": "Sum of salary",
"translation": "給与の合計"
}
]
}