新バージョンがリリースされるたびに、4D Write Proの一般的な使い方やコマンドについてお客様の皆様からいただいたフィードバックを参考にさせていただいています。互換性を100%保ちつつも、いくつかのコマンドやランゲージ機能は進化しています!
4D 20 R8においてシンタックスが改善されたいくつかのコマンドでは、オブジェクトや コレクションなどの現代的なパラメータを使用できるようになりました。他のコマンドは関数になり、より使いやすくなりました。また、多くの新しい関数が追加されました。これらにより、あなたのコードはよりシンプルに、より汎用的に、そしてより保守しやすくなります!
WP GET/SET ATTRIBUTES : すべての属性を1つのオブジェクトで取得可能に!
最も人気のあるコマンドの1つはWP SET ATTRIBUTES で、1文字からドキュメント全体まで、あらゆる種類のターゲットに対して使用できるからです。このコマンドは、属性と値のペアではなく、オブジェクトをパラメータとして受け取ることができるようになりました。
コードサンプル
$attributes:={color: "red"; fontBold: 0; fontItalic: 1; fontSize: "16pt"}
WP SET ATTRIBUTES($range1; $attributes)
WP SET ATTRIBUTES($range2; $attributes)
WP SET ATTRIBUTES($range3; $attributes)
同じように、任意のレンジや要素の、属性の全部または一部をオブジェクトで受け取ることができます。これは、同じ属性を別のターゲットに対しても適用したい場合に非常に有用です。パラメータを1つだけ渡すと、返されるオブジェクトにはすべての属性が含まれますが、コレクションを使用することでこれを制限することができます!
$attributes:=WP Get attributes($range; ["color"; "fontItalic"])
最後に、WP RESET ATTRIBUTES コマンドは、複数のパラメータの代わりにコレクションを受け付けるようになりました(もちろん、従来のシンタックスも引き続き有効です)。
$attributes:=["color"; "fontBold"; "fontItalic"; "fontSize"]
WP RESET ATTRIBUTES($range1; $attributes)
WP RESET ATTRIBUTES($range2; $attributes)
WP RESET ATTRIBUTES($range3; $attributes)
WP TABLE APPEND ROW: フォーミュラ、コレクション、関数リターン!
このコマンドのパラメータには、フォーミュラタイプか名前付きフォーミュラを指定できるようになりました(注意:名前付きフォーミュラとは、フォーミュラとフォーミュラ名の両方を含むオブジェクトです。こちらのBlog記事を参照して下さい)。
そして、パラメータはコレクションとしてコマンドに渡すことができ、最大の利点として、コマンドは行要素を返すようになりました!
$row:=WP Table append row($table; "Reference"; "Date"; "Time"; "rnd 1"; "rdn 2")
WP SET ATTRIBUTES($row; wk background color; "lightgrey")
$colItems:=[]
$colItems.push("KX-825")
$colItems.push(Formula(Current date))
$colItems.push(Formula(String(Current time; HH MM SS)))
$colItems.push(Formula(Random))
$colItems.push({name: "RND NUMBER"; formula: Formula(Random)})
$row:=WP Table append row($table; $colItems)
WP INSERT PICTURE
ドキュメントに何かの要素を挿入する場合、この要素にすぐにアクセスできると便利です。そのため、WP INSERT PICTURE コマンドはWP Insert picture 関数となり、ピクチャー要素を返します。例えば、画像を挿入した直後にフレームに収めたい場合などに便利です。さらに、このコマンドは引数として4D.File 型を受け取ることができるようになりました!
$pictureFile:=File(Folder(fk resources folder).path+"bullet.png"; fk posix path)
$picture:=WP Insert picture(WParea; $pictureFile; wk append)
$attributes:={}
$attributes[wk margin]:="8pt"
$attributes[wk padding]:="5pt"
$attributes[wk border width]:="2pt"
$attributes[wk border style]:=wk solid
$attributes[wk border color]:="navy"
WP SET ATTRIBUTES($picture; $attributes)
ドキュメントとピクチャ
WP IMPORT DOCUMENT 、WP EXPORT DOCUMENT 、WP INSERT PICTURE 、WP Add picture コマンドも改善され、通常の引数タイプに加え、4D.File 型の引数を受け付けるようになりました。
$documentFile:=File("/RESOURCES/reference.4wp")
WParea:=WP Import document($documentFile)
$documentFile:=File("/DATA/CopyOfReference.4wp")
WP EXPORT DOCUMENT(WParea; $documentFile)
$pictureFile:=File("/RESOURCES/bullet.png")
$picture3:=WP Insert picture(WParea; $pictureFile; wk append)
$pictureFile:=File("/RESOURCES/bullet.png")
$picture:=WP Add picture(WParea; $pictureFile)
“INSERT DOCUMENT”の代わりに “INSERT DOCUMENT BODY”
より明確にするため、そのコマンドの挙動に基づいてWP INSERT DOCUMENT コマンドは、WP Insert document body という名前に変更されました。
これが呼ばれると、ドキュメントの本文が挿入されます。ヘッダー、フッター、アンカーされた画像、テキストボックスなどは無視されます。唯一の例外は、スタイルシートはインポートされるということです
下の例でわかるように、このコマンドはインポートされた本文に対応するレンジを返します!
$file:=File("/RESOURCES/Main.4wp")
$main:=WP Import document($file)
$pictureFile:=File("/RESOURCES/bullet.png")
$sub:=WP Import document($pictureFile)
$range:=WP Insert document body($main; $sub; wk append)
レンジ情報も返すように
いくつかのコマンドはいわば無言で、実行後に何も返しませんでした。こういった場合にレンジを返してくれたら便利であったであろう以下のコマンドは、まさにそのような例といえ、これらはすべてテキストのレンジを返します!
- WP INSERT FORMULA
- WP INSERT BREAK
- WP INSERT DOCUMENT BODY (以前はWP INSERT DOCUMENT)
$range:=WP Insert formula(WParea; Formula(Current date); wk append)
WP SET ATTRIBUTES($range; {color: "red"; fontItalic: 1; fontBold: 0})
さらなる新機能
セクション
セクションには名前とインデックスがあります(これらは属性です)が、これらの情報にアクセスするのは簡単ではありませんでした。
新しいThis.sectionIndex とThis.sectionName 関数を使えば、簡単にアクセスできるようになります!またこれらの関数はフォーミュラとしてドキュメント内に挿入することもできます。
ページインデックス
必要であれば、This.pageIndex 関数でページインデックスにアクセスできるようになりました。
This.pageNumber 関数のように値が変化する(セクションごとに設定またはリセットされ得る)のとは異なり、ページインデックスは常に1から始まり、ページネーションにのみ依存します。
例えば、ドキュメントには3つのセクションがあり、そのページ番号は体系的に1から始まるとします。前文部分は1から30まで、主要部分は1から200まで、付録部分は1から8まであったとします。この場合、ページインデックスは1から238まで振られていくことになります。
結論
簡略化されたコマンドは、4D Write Pro開発者の仕事を容易にし、コードレビューとメンテナンスを簡略化することは間違いありません。フォーラムでのフィードバックをお待ちしています!!
