Report Designer

TsgcHTMLComponent_ReportDesigner: ブラウザーで動作するレポートデザイナーです。TsgcHTMLReport の定義、つまりバンド、アイテム、パラメーター、フォント、ページ設定を編集し、レポートエンジン自身が描画する PDF プレビューを備えます。開発者はアプリケーションのレポートを作成でき、エンドユーザーはデスクトップツールなしで必要に応じてレポートを調整できます。Delphi、C++ Builder、.NET で利用できます。

TsgcHTMLComponent_ReportDesigner

TsgcHTMLReport にリンクして、レンダリングします。すべての編集はブラウザーで行われ、ユーザーが設計している間はリクエストを送信しません。保存は定義をサーバーに送信し、サーバーが検証して JSON として OnSave に渡します。AutoApply を使うと、レポートが直ちに変更され、同じレポートの Report Viewer が新しいデザインで印刷します。

コンポーネントクラス

TsgcHTMLComponent_ReportDesigner、リンクされた TsgcHTMLReport の定義を編集します

レンダリング内容

ツールバー、ツールボックス、データフィールド、バンド付きのページ、インスペクター、パラメーター、PDF プレビューを備え、Bootstrap 5.3 CSS と Bootstrap Icons CSS を使用します

言語

Delphi, C++ Builder, .NET

レポートをリンクし、デザインを保存し、印刷する

レポートは LoadFromJSON で最後に保存されたデザインを読み込みます。デザイナーがそれを編集し、OnSave が次回のサーバー起動のために定義を保持し、AutoApply を使うと、保存のたびにレポートが直ちに変更されます。

uses
  sgcHTML_Report, sgcHTML_Component_ReportDesigner;

// レポート
oReport := TsgcHTMLReport.Create(Self);
oReport.Name := 'OrdersReport';
oReport.Title := 'Orders';
oReport.DataSet := qryOrders;
oReport.LoadFromJSON(LoadDefinition('orders'));   // 最後に保存されたデザイン

// デザイナー
oDesigner := TsgcHTMLComponent_ReportDesigner.Create(Self);
oDesigner.Name := 'OrdersDesigner';
oDesigner.HTMXEngine := sgcHTMXEngine1;
oDesigner.Report := oReport;
oDesigner.OnSave := DesignerSave;
oTemplate.BodyContent := oDesigner.HTML;

procedure TForm1.DesignerSave(Sender: TObject; const aJSON: string;
  var aAccept: Boolean; var aErrorMessage: string);
begin
  // aJSON は定義で、サーバーが既に作業用のレポートに読み込んでいます
  StoreDefinition('orders', aJSON);   // データベースまたはファイル
end;
@* Views/Reports/Design.cshtml: OrdersReport は長期間有効な TsgcHTMLReport です *@
@model ReportsModel

<sgc-report-designer name="orders" report="@Model.OrdersReport"
                     auto-apply="false" css-height="760px" sub-reports="LinesReport"
                     on-get-report="Model.GetReport" on-save="Model.SaveReport" />
using esegece.sgcWebSockets;

// レポート
var report = new TsgcHTMLReport();
report.Name = "OrdersReport";
report.Title = "Orders";
report.LoadFromJSON(LoadDefinition("orders"));

// ユーザーごとにデザインを持つデザイナー
var designer = new TsgcHTMLComponent_ReportDesigner();
designer.Name = "OrdersDesigner";
designer.HTMXEngine = engine;
designer.Report = report;
designer.AutoApply = false;
designer.OnSave += (object sender, string json, ref bool accept, ref string error) =>
    accept = SaveUserReport(CurrentUserID(), json, ref error);
designer.OnGetReport += (object sender, ref TsgcHTMLReport? report) =>
    report = GetUserReport(CurrentUserID()) ?? report;
template.BodyContent = designer.HTML;

ユーザーが得られるもの

ブラウザーのレポートデザイナーと、レポートを印刷するのと同じエンジンが印刷するプレビュー。

ツールバー

新規、ユーザーのコンピューターから .json 定義を開く「開く」、保存、元に戻すとやり直し、ズーム、グリッドに合わせる、用紙サイズ、向き、余白を設定するページ設定があります。整列 (左揃え、左右中央揃え、右揃え、上揃え、上下中央揃え、下揃え、幅を揃える、高さを揃える、サイズを揃える)、最前面へ移動、最背面へ移動、コピー、貼り付け、複製、削除、そしてデザインとプレビューの切り替えも備えます。

ツールボックスとデータフィールド

ツールボックスには、テキスト、画像、線、四角形、グラフ、リッチテキスト、バーコード、QR コード、サブレポートがあります。クリックすると選択したバンドにアイテムが追加され、ドラッグすると任意のバンドの位置にドロップされます。データフィールドはデータソースのフィールドを列挙し、クリックまたはドロップすると、そのフィールドにバインドされたテキストアイテムが追加されます。

ページとバンド

キャンバスは、選択したズームでバンド付きのページを表示し、各バンドにはキャプションと高さを変更するハンドルがあります。バンドリストは、レポートヘッダー、ページヘッダー、グループヘッダー、明細、グループフッター、ページフッター、レポートフッターを追加し、移動や削除を行い、グループバンドのグループフィールドを設定します。

マウス編集

クリックで選択し、Ctrl+クリックまたは Shift+クリックで選択に追加し、キャンバスの空いた部分で矩形選択します。ドラッグで選択範囲が移動し、別のバンドにも移動でき、8 つのハンドルでサイズを変更し、ドラッグ中のバンドは強調表示されます。すべての変更は 1 回の元に戻す操作になります。

インスペクター、パラメーター、フォント

インスペクターは、選択、バンド、レポートに対して、レポートエンジンのすべての公開プロパティを編集し、「フィールドの挿入」「集計」「レポートの値」で式を記述できます。「パラメーター」タブには Report Viewer が求めるものがあり、レポートのフォントは .ttf、.ttc、.otf ファイルを定義に埋め込めます。

プレビュー

プレビューは、保存済みの定義ではなく、編集中の定義を、レポートのデータとイベントを共有する作業用のレポートで印刷するため、PDF はレポートが印刷するものと同じです。埋め込みの PDF ビューア、またはブラウザーの PDF ビューアを使う iframe に表示され、PreviewMode で設定します。

キーボード

Tab はキャンバスのアイテム間を移動し、矢印キーは選択範囲をグリッド 1 つ分動かし、Shift+矢印でサイズを変更し、Alt+上と Alt+下は前または次のバンドに移動します。Ctrl+C、Ctrl+V、Ctrl+D はコピー、貼り付け、複製、Ctrl+Z と Ctrl+Y は元に戻すとやり直し、Ctrl+S はデザイナー内のどこでも保存します。

安全な編集

デザインに未保存の変更がある間、デザイナーは「未保存の変更があります」と表示し、ブラウザーはページを離れる前に確認します。名前のないパラメーターやフォントは、何かを送信する前に選択されてフォーカスされます。デザイナーはページの data-bs-theme="dark" と dir="rtl" に従い、polite のライブリージョンがメッセージを通知します。

主なプロパティ、メソッド、イベント

最もよく使うメンバーです。

Report と AutoApply

Report は設計中の TsgcHTMLReport です。AutoApply (既定でオン) を使うと、保存で Lock の中に定義が読み込まれ、プレビューがそれを変更することはありません。ReadOnly はデザインとプレビューを表示し、ユーザーにプロパティの閲覧を許可し、サーバー側でも保存を拒否します。

OnSave

OnSave(Sender, aJSON, aAccept, aErrorMessage) は、サーバーが LoadFromJSON で作業用のレポートに定義を読み込んだ後にそれを受け取るため、読み込めない定義がコードに届くことはありません。データを保持する場所に保存するか、aAccept を False にして aErrorMessage に独自のテキストを設定してください。

ユーザーごとのデザイン

1 つのデザイナーがすべてのユーザーに対応します。AutoApply を False にし、ユーザーの定義を OnSave に保持し、デザイナーと Report Viewer の OnGetReport でそのユーザーのレポートを返します。これはリクエストのスレッドで発生し、そこでは sgcHTMLRequestSession がセッションを返します。

フィールド、サブレポート、グラフ

OnGetFieldNames(Sender, aFields) はデータソースのフィールドを受け取り、デザイナーが表示するリストを変更できます。SubReports と Charts は、サブレポートアイテムとグラフのソースとして提供するコンポーネントを指定し、空の場合はレポートの Owner のすべてが対象になります。FontNames はフォントエディターのフォントファミリーです。

セキュリティと制限

MaxSize は送信される定義を制限し (既定は 1 MB)、ブラウザーで、そしてサーバーでも再度チェックされ、PreviewMaxSize はプレビューの PDF (8 MB) を制限します。リクエスト間でサーバーに保存されるものはありません。レポートを設計するユーザーは、データソースのすべてのフィールドを印刷できるため、ユーザーに見せてはいけないフィールドは、データソース自体から削除してください。

Delphi IDE での設計

フォーム上の TsgcHTMLReport をダブルクリックするか、コンテキストメニューの「Design report...」を選ぶと、フォームのデータフィールド、サブレポート、グラフとともに、同じデザイナーが IDE のウィンドウで開きます。保存のたびに、フォーム上のレポートに書き込まれます。Windows 上の Delphi 10.4 以降と WebView2 ランタイムが必要で、「Open in browser」は同じデザイナーを既定のブラウザーで開きます。

エンジンなし

ActionURL を設定して HTMXEngine がない場合、スクリプトは保存、プレビュー、フィールドのリクエストを指定の URL に送信し、ホストがそれらを DispatchComponentEvent に渡します。ページでは、window.sgcReportDesigner が getJSON、setJSON、isDirty、save、preview、undo、redo を提供します。

ASP.NET Core

Razor ビューでは、<sgc-report-designer> Tag Helper がデザイナーをレンダリングし、保存とプレビューは UseSgcHtml のコンポーネントイベントエンドポイントに送信されます。report には長期間有効な TsgcHTMLReport を渡し、Kestrel の MaxRequestBodySize (既定は 30 MB) が引き続きリクエストの上限になります。

デモ

Demos\60.HTML\01.RunTime\32.ReportDesigner は sgc Report Studio で、ポート 8134 のサーバーがブラウザーで 4 つのレポートを設計します。ネストしたサブレポート付きの注文、2 ページにまたがるリッチテキストの顧客向けレターと、英語、日本語、中国語、韓国語、アラビア語、ロシア語のいずれかの請求書、グラフ付きの売上レポートです。各ブラウザーが独自のデザインを保持し、プレビュータブが Report Viewer でそれを印刷します。デザイン時、Lazarus、.NET の各バージョンも同様の内容です。

さらに詳しく

オンラインで試すeSeGeCe デモサーバーでライブ動作する レポートデザイナー デモをご覧ください。
オンラインヘルプこのコンポーネントの完全な API リファレンスと使い方ガイドです。
Report Viewer と TsgcHTMLReportデザイナーが編集するレポートエンジンと、それを印刷するビューアです。
すべての sgcHTML コンポーネント80 以上のコンポーネントの機能マトリックスをすべてご覧いただけます。
無料体験版のダウンロード30 日間の体験版には 60.HTML のデモプロジェクトが含まれます。
価格完全なソースコード付きの Single、Team、Site ライセンス。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

始める準備はできましたか?

無料体験版をダウンロードして、Delphi、C++ Builder、.NET で Web UI の構築を始めましょう。