version 4.1 では多くの新機能が追加されました。
このページではversion 4.1で追加された主な機能について説明しています。
1.PDFモードの標準値を変更
2.フォントの高さを調整
3.オブジェクトの回転
4.N-up 出力
5.レイヤーオブジェクト
6.スタートフッター
7.アイテムの複製を自動配置
8.線の端末記号
9.メソッドチェーン対応とスクリプト関数の追加
10.入力コントロールの汎用性向上
11.レイアウトウインドウに表示するオブジェクトの選択
12.アイテムガイドに影響を受けるアイテム(範囲)を設定
13.「値の挿入」ダイアログの刷新
14.属性(プロパティ値)のコピー&ペースト
15.アイテムの「フォント名」を一覧表示
16.その他
version 4.1からは新規作成した帳票の初期設定(デフォルト値)が一部変更となります。
「PDFモード」についても初期設定が「調整/互換」から「標準」に変更されています。

「WFR2025(ver4.1も含む)」で追加された機能の多くが、「PDFモード(標準)」が設定されていることを前提としています。
「PDFモード(標準)」にすることで、「プレビュー表示」、「印刷」、「PDFへの出力」で結果を統一することができます。
| PDFモード | 説明 |
|---|---|
| OFF | 文字の情報はWindowsAPIを通じて取得し、WindowsAPIを使って文字を出力します。 |
| 調整/互換 | 文字の情報はUnicodeの仕様やフォントファイルを参照し、その情報を元にWindowsAPIで出力します。 |
| 標準 | 文字の情報はUnicodeの仕様やフォントファイルを参照し、フォントのグリフを使って文字を出力します。 PDF出力では「PDFモード」の設定に関わらず「標準」または「強調」として動作します。 (旧バージョンでも同様です) |
| 強調 | 「標準」と同じですが、文字の輪郭を強調します。 文字を小さく印字する場合、線が細くかすれるような場合に設定します。(解像度の粗いプリンターなど) |
上記で説明しているように、「PDFモード」によって「縦書き」文字の一部の出力に差異が発生することがあります。
代表的な文字としてはギリシャ文字(「α」や「β」など)があります。
Unicodeの仕様ではギリシャ文字はアルファベットと同じように扱いますが、Windows APIでは漢字などと同じように扱われています。
この違いから「プレビュー表示」や「印刷」と「PDFへの出力」で文字の向きが異なることがあります。
このような場合、「アイテムのプロパティ」−「テキスト置換」−「縦書き文字」に対象の文字を登録することで、縦書き時に回転されない文字(アルファベットやギリシャ文字)であっても強制的に縦に出力できるようになります。

旧バージョンでは、選択されている「フォントの全ての文字が収まるサイズ」を「フォントのサイズ(高さ)」としていましたが、近年のフォント(「游明朝」など)では「全ての文字が収まるサイズ」と「フォント既定のサイズ」が異なることがあり、文字が小さく出力されるという問題がありました。
WFR2025では、この問題に対応するために「フォントの既定のサイズ」を「フォントのサイズ(高さ)」として使用するオプションが追加されています。
version 4.1以降、新規作成した帳票からは「フォントサイズを既定の値で調整する」が有効となった状態でアイテムが作成されます。
また、フォントによっては一部の文字がアイテム(意図する範囲)に収まらない場合があります。このような場合、ベースラインを調整することで文字の位置を調整することができます。

既存の帳票であっても、「ブックのプロパティ」−「互換オプション」でアイテム作成時の初期値を変更することができます。
アイテムを任意の角度に回転させることができるようになりました。
対象のアイテムを選択し「
」をマウスで操作することで任意の角度に調整することができます。

セクションオブジェクトを任意の角度に回転させることができるようになりました。
「
」をマウスで操作することで任意の角度に調整することができます。

従来は縦(上から下)にレコードを配置する表しか作成することができませんでしたが、セクションの回転機能を応用することで、左から右、右から左、下から上にレコードを配置する表にも対応することができます。


表の方向に応じて編集操作を最適化する機能も追加されているため回転を意識することなく編集を行うことができます。

プリンタドライバに頼ることなく「N-up」出力を行える機能を追加しました。
プリンタドライバを通じた「N-up」印刷では、ドライバにより出力内容の縮尺が発生します。この影響で、密度の高いバーコードの読み取り精度が著しく低下することが課題となっていました。
今回、ツールとして「N-up」出力に対応したことで、バーコードの均一性を維持しやすくなります。
また、PDFや画像への出力でも「N-up」出力が行えるようになりました。

その他にも、用紙方向に合わせて帳票を自動で回転させる機能や、出力位置の微調整を行うための各種オプションが追加されています。

印刷オプションを使うことで外部プログラム等から指定することも可能です。
| オプション | 説明 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Nup | 用紙に配置するページ数を指定します。 wfrObj.SetPrintOption("Nup", "4") |
||||||||||
| Nup_Space | N-up出力を行う場合、ページとページの間隔を1/100mm単位で指定します。 wfrObj.SetPrintOption("Nup_Space", "500") |
||||||||||
| Nup_SepLine Nup_SL |
N-up出力を行う場合、ページとページの間の区切り線を設定します。 wfrObj.SetPrintOption("Nup_SL", "solid, 50, gray") |
||||||||||
| Nup_PageLine Nup_PL |
N-up出力を行う場合、ページの枠線を設定します。 wfrObj.SetPrintOption("Nup_PL", "dot, 20, navy") |
||||||||||
| Nup_PageNumber Nup_PN |
N-up出力を行う場合、ページ番号の有無を設定します。 wfrObj.SetPrintOption("Nup_PN", "off")
|
||||||||||
| PaperRotate |
用紙の回転方法を指定します。 wfrObj.SetPrintOption("PaperRotate", "900")
|
||||||||||
| MarginL |
用紙のマージンを設定します。(左) wfrObj.SetPrintOption("MarginL", "1000") |
||||||||||
| MarginR | 用紙のマージンを設定します。(右) wfrObj.SetPrintOption("MarginR", "1000") |
||||||||||
| MarginT | 用紙のマージンを設定します。(上) wfrObj.SetPrintOption("MarginT", "1000") |
||||||||||
| MarginB | 用紙のマージンを設定します。(下) wfrObj.SetPrintOption("MarginB", "1000") |
フォーム/セクション/ユニットオブジェクトに、レイヤーを管理するレイヤーオブジェクトを新たに追加しました。
複数のアイテムが重なっているような帳票の場合、下層(背面側)にあるアイテムを選択することは難しく、一旦、上層のアイテムを移動したり、「アイテムリスト」タブで目的のアイテムを探して選択する必要がありました。
アイテムを層ごとにレイヤーに分けて作成することでアイテム選択が容易になり、その後の保守作業の効率化を図ることができます。
また、条件で表示・非表示を制御するアイテムについても、レイヤーを分けることでアイテム個々ではなくレイヤー単位で表示を制御できるようになります。

レイヤーオブジェクトは配置深度を、「下層」「標準」「上層」から選ぶことができす。
| 配置深度 | 説明 |
|---|---|
| 下層 | レイヤーのアイテムを、親オブジェクトのアイテムの背面に配置します。 |
| 標準 | 親オブジェクトのアイテムの前面に、レイヤーオブジェクトのアイテムが配置されます。 デフォルト値です。 |
| 上層 | ユニットのレイヤーでは「標準」と同じとなります。 セクションオブジェクトやフォームオブジェクトでは、子オブジェクト(ユニット)のアイテムも含め、レイヤーオブジェクトのアイテムが最前面となります。 |
さらに、各オブジェクトの配置が確定しないと決まらない値(ページ数など)については、フォーム/セクション/詳細ユニットのIsVisible( )では使用が制限されていますが、レイヤーオブジェクトのIsVisible(
)では利用可能です。これまで行えなかった、ページ数などに応じて書式を変更するような運用が可能となります。
セクションオブジェクトに配置できるユニットオブジェクトに、「スタートフッター」を追加しました。
最初のページに優先的に配置されるフッターとなります。
注意書きや集計行を先頭ページの下部に配置するような帳票の設計が容易となります。

「線」「図形」アイテムに複製を自動配置する機能を追加しました。
表の固定部分(枠線など)をあらかじめ作成する場合、等間隔で配置することが容易となります。
複製できるアイテムは「線」アイテムと「図形」アイテムとなります。
@
対象のアイテムを選択します。

A
「アイテムのプロパティ」−「複製」の各値を設定します。

B
1つの図形アイテムで表の背景を作成することができます。

線アイテムで始点・終点にスタイル(端末記号)を設定することができるようになりました。
端末記号はサイズを1mm〜7mmの範囲で調整することができます。

スクリプトでメソッドチェーンを使った記述が可能となりました。
これまで、各オブジェクトのメソッドなどを利用する場合は、一旦、オブジェクト変数に代入する必要がありました。
メソッドチェーンを使うことで関数の戻り値に対して直接、オブジェクトメソッドを呼び出すことができるようになりました。
<例1>
| // 従来 NUMBER n_value; n_value = GetN("計測値"); return Round(n_value, 3); // version 4.1以降 GetN("計測値").Round(3) |
<例2>
| // 従来 NUMBER_ARRAY p_numA; p_numA = GetNA("英語", 5); return p_numA.Sum( ); // version 4.1以降 GetNA("英語", 5).Sum( ) |
追加された関数は下記の通りです。
データ値や集計値を取得する関数を中心に、多くの関数が追加されました。
これまで、使い勝手の悪いGetExS( )や、式フィールドで事前に演算する必要があった値を、簡易に取得できるようになりました。
| 関数 | 説明 |
|---|---|
| GetSum( ) | オブジェクトにリンクしているデータの集計結果を取得(合計) |
| GetCom( ) | オブジェクトにリンクしているデータの集計結果を取得(累計) |
| GetMax( ) | オブジェクトにリンクしているデータの集計結果を取得(最大) |
| GetMin( ) | オブジェクトにリンクしているデータの集計結果を取得(最小) |
| GetAve( ) | オブジェクトにリンクしているデータの集計結果を取得(平均) |
| GetGroup( ) | オブジェクトにリンクしているデータのグループ情報を取得 |
| SetM( ) | オブジェクトにリンクしているデータのフィールド値の設定(画像) |
| FORM_GetS( ) | フォームのデータセクションにリンクしているデータのフィールド値の取得(文字列) |
| FORM_GetN( ) | フォームのデータセクションにリンクしているデータのフィールド値の取得(数値) |
| FORM_GetM( ) | フォームのデータセクションにリンクしているデータのフィールド値の取得(画像) |
| FORM_GetSum( ) | フォームのデータセクションにリンクしているデータの集計結果を取得(合計) |
| FORM_GetCom( ) | フォームのデータセクションにリンクしているデータの集計結果を取得(累計) |
| FORM_GetMax( ) | フォームのデータセクションにリンクしているデータの集計結果を取得(最大) |
| FORM_GetMin( ) | フォームのデータセクションにリンクしているデータの集計結果を取得(最小) |
| FORM_GetAve( ) | フォームのデータセクションにリンクしているデータの集計結果を取得(平均) |
| FORM_GetGroup( ) | フォームのデータセクションにリンクしているデータのグループ情報を取得 |
| FORM_GetRecordNo( ) | フォームのデータセクションにリンクしているデータのカレントレコード番号を取得 |
| FORM_GetRecordCount( ) | フォームのデータセクションにリンクしているデータのレコード数を取得 |
| FORM_Set( ) | フォームのデータセクションにリンクしているデータのフィールド値を設定 |
| FORM_SetM( ) | フォームのデータセクションにリンクしているデータのフィールド値を設定(画像) |
| MASTER_GetS( ) | レポートのマスターセクションにリンクしているデータのフィールド値の取得(文字列) |
| MASTER_GetN( ) | レポートのマスターセクションにリンクしているデータのフィールド値の取得(数値) |
| MASTER_GetM( ) | レポートのマスターセクションにリンクしているデータのフィールド値の取得(画像) |
| MASTER_GetSum( ) | レポートのマスターセクションにリンクしているデータの集計結果を取得(合計) |
| MASTER_GetCom( ) | レポートのマスターセクションにリンクしているデータの集計結果を取得(累計) |
| MASTER_GetMax( ) | レポートのマスターセクションにリンクしているデータの集計結果を取得(最大) |
| MASTER_GetMin( ) | レポートのマスターセクションにリンクしているデータの集計結果を取得(最小) |
| MASTER_GetAve( ) | レポートのマスターセクションにリンクしているデータの集計結果を取得(平均) |
| MASTER_GetGroup( ) | レポートのマスターセクションにリンクしているデータのグループ情報を取得 |
| MASTER_GetRecordNo( ) | レポートのマスターセクションにリンクしているデータのカレントレコード番号を取得 |
| MASTER_GetRecordCount( ) | レポートのマスターセクションにリンクしているデータのレコード数を取得 |
| MASTER_Set( ) | レポートのマスターセクションにリンクしているデータのフィールド値を設定 |
| MASTER_SetM( ) | レポートのマスターセクションにリンクしているデータのフィールド値を設定(画像) |
| SECTION_GetS( ) | 任意のセクションにリンクしているデータのフィールド値の取得(文字列) |
| SECTION_GetN( ) | 任意のセクションにリンクしているデータのフィールド値の取得(数値) |
| SECTION_GetM( ) | 任意のセクションにリンクしているデータのフィールド値の取得(画像) |
| SECTION_GetSum( ) | 任意のセクションにリンクしているデータの集計結果を取得(合計) |
| SECTION_GetCom( ) | 任意のセクションにリンクしているデータの集計結果を取得(累計) |
| SECTION_GetMax( ) | 任意のセクションにリンクしているデータの集計結果を取得(最大) |
| SECTION_GetMin( ) | 任意のセクションにリンクしているデータの集計結果を取得(最小) |
| SECTION_GetAve( ) | 任意のセクションにリンクしているデータの集計結果を取得(平均) |
| SECTION_GetGroup( ) | 任意のセクションにリンクしているデータのグループ情報を取得 |
| SECTION_GetRecordNo( ) | 任意のセクションにリンクしているデータのカレントレコード番号を取得 |
| SECTION_GetRecordCount( ) | 任意のセクションにリンクしているデータのレコード数を取得 |
| SECTION_Set( ) | 任意のセクションにリンクしているデータのフィールド値を設定 |
| SECTION_SetM( ) | 任意のセクションにリンクしているデータのフィールド値を設定(画像) |
| DATA_GetS( ) | 任意のデータのフィールド値の取得(文字列) |
| DATA_GetN( ) | 任意のデータのフィールド値の取得(数値) |
| DATA_GetM( ) | 任意のデータのフィールド値の取得(画像) |
| DATA_GetSum( ) | 任意のデータの集計結果を取得(合計) |
| DATA_GetCom( ) | 任意のデータの集計結果を取得(累計) |
| DATA_GetMax( ) | 任意のデータの集計結果を取得(最大) |
| DATA_GetMin( ) | 任意のデータの集計結果を取得(最小) |
| DATA_GetAve( ) | 任意のデータの集計結果を取得(平均) |
| DATA_GetGroup( ) | 任意のデータのグループ情報を取得 |
| DATA_GetRecordCount( ) | 任意のデータのレコード数を取得 |
| DATA_Find( ) | 任意のデータのフィールド値を検索 |
| DATA_FindGet( ) | 任意のデータのフィールド値を検索し、指定フィールドの値を取得 |
| DATA_Set( ) | 任意のデータのフィールド値を設定 |
| DATA_SetM( ) | 任意のデータのフィールド値を設定(画像) |
| NUMBER.Str( ) | 数値を文字列で取得 |
| NUMBER.Round( ) | 小数点以下を四捨五入した数値を取得 |
| NUMBER.RoundDown( ) | 小数点以下を切り捨てた数値を取得 |
| NUMBER.RoundOff( ) | 小数点以下を切り上げた数値を取得 |
| GROUPオブジェクト | グループ情報を参照するためのオブジェクト |
| GROUP.GetGrouNo( ) | 現在のグループ位置を取得 |
| GROUP.GetGrouCount( ) | グループ総数を取得 |
| GROUP.GetInNo( ) | 現在のグループ範囲中の位置を取得 |
| GROUP.GetInCount( ) | 現在のグループ範囲に含まれるレコード数を取得 |
| GROUP.GetStartRecordNo( ) | 現在のグループ範囲の先頭レコード番号を取得 |
| GROUP.GetEndRecordNo( ) | 現在のグループ範囲の終端レコード番号を取得 |
| GROUP.GetRecordNo( ) | カレントレコード番号を取得 |
| GROUP.GetValue( ) | カレントグループ値を取得 |
| GROUP.IsStart( ) | カレントレコードがグループ範囲の先頭か判定 |
| GROUP.IsEnd( ) | カレントレコードがグループ範囲の終端か判定 |
表示されている帳票上で直接値を入力するための「入力コントロール」の機能を拡張し汎用性を向上しました。
これまでも、「変数」、あるいは「セクションのリンクデータ」(カレントレコードのフィールド値)に対し、データの入力・変更を行うことができましたが、version
4.1では新たにリンク先として「カスタム」が追加されました。
「カスタム」では、「GetValueスクリプト」や「ChangeValueスクリプト」と連携することで、カレントレコードにとらわれないデータ入力が行えるようになります。

<GetValueスクリプト例>
表示(編集)する値を取得。
| // データ(Data1)の「項目」フィールドを検索し、「内容」フィールドの値を戻します。 // この例では検索する値としてアイテム名(GetName( )関数で取得)を指定しています。 // アイテムをコピーし「名称」だけを変更することで対象の項目を変更することができます。 DATA_FindGet("Data1", "項目", GetName( ), "内容") |
| // データ(Data1)の「項目」フィールドを検索し、「内容」フィールドの値を変更します。 // この例では検索する値としてアイテム名(GetName( )関数で取得)を指定しています。 // DATA_Fined( )は対象のレコード番号を戻します。 // アイテムをコピーし「名称」だけを変更することで対象の項目を変更することができます。 // // 「_chnage_value」はスクリプトの引数で、変更後の値が代入されています。 // 「return 3」で、変更した値を適用した状態で帳票を再構築します。 DATA_Set("Data1", "内容", DATA_Find("Data1", "項目", GetName( )), _change_value); return 3; |

※
DATA_Get/Set/Find系の関数を使う場合、データウインドウの表示モードを「リアルモード」に設定することをお勧めします。
「編集モード」では編集用の1レコードのデータとして扱われるため、1レコード目以外のレコードの値を取得することができません。「リアルモード」にすることでレイアウトウインドウで値を見ながら編集操作を行うことができます。
レイアウトウインドウに表示するオブジェクトを選択できるようになりました。
レイアウトウインドウに表示するオブジェクトについては、「オブジェクト」タブのチェックボタン(
)で選択することができます。
複数のオブジェクトが定義されている場合、レイアウトウインドウに重ねて配置されることで編集操作の支障となることがあります。
このような場合、表示するオブジェクトを選択することで、対象のオブジェクトに集中した編集が行えるようになります。

※
編集中のオブジェクトはチェックの有無に関わらず最前面に表示されます。
アイテムガイドを使った一括移動で、影響を受けるアイテムを指定できるようになりました。
上下左右に並んだアイテムのサイズ変更の手間を大幅に削減することができます。
@
ガイドのベースとなるアイテムを選択します。

A
「Ctrl」キーを押しながらマウスを使って、影響を与えたいアイテムを選択します。
マウスドラッグにより範囲を指定して複数選択することもできます。

B
ガイドを移動することで選択されているアイテムだけを対象とした一括移動が行えます。

従来通り、オブジェクト内の全アイテムを対象とする場合は、「A」をスキップします。
「スクリプト」ダイアログから表示する「値の挿入」ダイアログが刷新されました。
データ名やフィールド名などを個別に選択できるようになり、関数を記述する手間を大幅に削減することができます。

ダイアログ上部に仕様や構文、作成された挿入値が表示されます。
選択しているアイテムのプロパティ値(テキストとフォント)をコピーし、他のアイテムに設定(ペースト)できる機能が追加されました。
従来、テキストやフォントに関しては設定項目も多く、各アイテムに設定を適用するには多くの手間が必要でした。
@
設定をコピーするアイテムを選択しマウス左クリックでポップアップメニューを開きます。
A
ポップアップメニューから「テキスト/フォント属性のコピー(T)」を実行することで、テキストとフォントの設定内容がクリップボードにコピーされます。

B
設定を適用(貼り付ける)アイテムを選択しポップアップメニューを開き、「テキスト/フォント属性の貼り付け(R)」を実行します。

各アイテムに設定されているフォント名を一括表示することができます。
エディタの下部にある「検索」タブで「!FontName」と指定し検索することで、全てのアイテムのフォントの設定を確認することができます。

その他、操作性の改善など多くの修正が行われています。