sgcRichEdit: アプリケーションにワープロを組み込む

· コンポーネント
sgcRichEdit: アプリケーションにワープロを組み込む | eSeGeCe ブログ
✦  sgcUI · sgcRichEdit

ワープロを、
あなたのアプリの中に。

sgcRichEdit は sgcUI の新しいリッチテキスト文書エディタです。ユーザーはスタイル、リスト、表、画像、リンクを使って、手紙、契約書、メモ、レポートを書けます。コードからは RTF、HTML、Markdown、JSON を読み書きし、DOCX、PDF、PNG ページへエクスポートできます。

  • VCL
  • FireMonkey
  • C++ Builder
  • WinForms
  • WPF
  • Avalonia

↔  ハンドルをドラッグして、ライトからダークに切り替え

sgcRichEdit Editor—□✕
Fluent プリセット(ライト)の sgcRichEdit Editor デモ
同じ文書を Fluent プリセット(ダーク)で表示
ライトダーク
4入出力フォーマット
3エクスポート形式
5UI フレームワーク
12エディタ言語

遅かれ早かれ、業務アプリケーションには本格的な文書が必要になります。CRM は顧客への手紙を作成し、診療管理ツールはケースノートを保存し、ERP は見積書テンプレートを保管し、ヘルプデスクは書式付きテキストで返信します。どれも単純なメモ欄では足りません。

sgcRichEdit は sgcUI に組み込まれた完全な文書エディタです。名前付きスタイル、多段階リスト、セル結合に対応した表、インライン画像、ハイパーリンクを備えた本物の文書モデルを保持し、文書をページ単位でレイアウトします。1 つの文書モデルが VCL、FireMonkey、WinForms、WPF、Avalonia の各コントロールを動かし、同じモデルでウィンドウなしに文書の読み込み、変換、エクスポートも行えます。

60 秒でわかる sgcRichEdit

スタイル、表、あらゆる言語、ライトとダーク、すべてのフォーマット、すべてのプラットフォームを 1 分で紹介します。YouTube でも公開中.

テキストボックスではなく、本物の文書

契約書、レポート、手紙は、開くたびに同じ見た目でなければなりません。sgcRichEdit は段落を名前付きスタイルで保持し、書式はスタイルの継承と直接書式の組み合わせで決まります。そのため、Heading 1 スタイルを変更すると、文書内のすべての見出しが一度に変わります。

AaAaAa
名前付きスタイルNormal、Heading 1 から 6、Title、Subtitle、Quote、Code、List Paragraph、Hyperlink、Table Grid が組み込まれています。
9 レベルのリスト箇条書き、数字、英字、ローマ数字に対応し、レベルを上げ下げするコマンドも備えています。
表列と行をまたぐセル結合、ヘッダー行、罫線、背景、入れ子の表に対応します。
画像とリンクインライン画像とハイパーリンクに対応し、Ctrl+クリックと OnLinkClick イベントを利用できます。
↺↻
元に戻す、やり直し完全な履歴を保持し、入力は単語単位にまとめられるため、1 回の取り消しで 1 単語が消えます。
第 3 四半期の成長、欧州の成長
検索と置換段落や表のセルをまたいで検索でき、正規表現に対応し、すべて置換も 1 回の取り消しで元に戻せます。

拡大して見る

太字、斜体、下線、取り消し線、上付き、下付き、フォント名、サイズ、色、蛍光ペン、配置、インデント、行間に対応します。上の文書の書式を 200% 拡大で見てみましょう。

200% 拡大での文字書式

表、画像、ページ

エディタは独自のページ設定で文書をページ分割します。段落は行単位で分割され、表のヘッダー行は各ページで繰り返され、改ページも保持されるため、画面で見たとおりに印刷できます。Print と PrintPreview はデスクトップで動作し、ExportToPNG は任意のページを指定した解像度でレンダリングします。

sgcRichEdit Editor—□✕
色付きのヘッダー行、結合セル、インラインのグラフ画像を含む表
PNG にエクスポートした文書の 1 ページ目
1 ページ目
PNG にエクスポートした文書の 2 ページ目
2 ページ目
PNG にエクスポートした文書の 3 ページ目
3 ページ目

スクリーンショットの文書の 3 ページを、ExportToPNG で 150 DPI で書き出したものです。

あらゆる言語、あらゆるユーザーへ

日本語、中国語、韓国語のユーザーは入力メソッドエディタ (IME) で文字を入力し、アラビア語やヘブライ語のユーザーは右から左へ書き、同じ文中に英単語が混在することもよくあります。sgcRichEdit は IME の変換中の文字をキャレット位置にインライン表示し、確定を 1 回の取り消し操作として扱います。双方向の段落でも、キャレットと選択範囲は読み手が期待する位置に保たれ、段落ごとに独自の方向を持てます。

sgcRichEdit Editor—□✕
英語が混在するアラビア語の右から左へのテキストと、日本語、中国語、韓国語、ロシア語の段落(ダークテーマ)

ライト、ダーク、Fluent、クラシック

sgcRichEdit は sgcUI のコントロールなので、スイートの他のコントロールと同じようにアプリケーションのテーマに追従します。Fluent プリセットを選ぶと、エディタとリボンが Windows 11 の外観になります。ダークに切り替えると、リボン、ステータスバー、バックステージはダークになり、ページは紙のように白いままです。

sgcRichEdit Editor—□✕
Fluent プリセット(ライト)の sgcRichEdit
クラシックプリセットの sgcRichEdit
Fluent プリセット(ダーク)の sgcRichEdit
uses
  sgcUICore_Theme;

// the Windows 11 look for every sgcUI control, sgcRichEdit included
sgcUISetApplicationThemePreset('Fluent');
// follow the light / dark setting of Windows, live
sgcUISetApplicationThemeFollow(utfSystem, True);

1 つの文書、あらゆるフォーマット

文書は、Word からは RTF、ブラウザやメールからは HTML、開発者向けツールからは Markdown として届きます。sgcRichEdit はそのすべてを読み書きでき、文書のあらゆる詳細を保存する独自のネイティブ JSON 形式も備えています。 LoadFromFile はフォーマットを自動判別し、SaveToFile は指定したフォーマットで保存し、AsHTML、AsRTF、AsMarkdown は文書を文字列として読み書きします。

読み込み

RTFWord から
HTMLCSS 対応
Markdown表にも対応
JSONネイティブ
1 つの文書モデル スタイル、リスト、表、画像、リンクをページ単位でレイアウト

保存とエクスポート

DOCXWord 向け
PDFタグ付き
PNG任意の DPI
RTF, HTML, MDと JSON

uses 句に追加した各フォーマットのユニットが、それぞれのリーダーやライターを登録します。sgcUIPDF_Export は PDF エクスポートを sgcPDF エンジンに接続し、このエンジンは sgcRichEdit と一緒にインストールされます。

uses
  sgcRichEdit_Formats, sgcRichEdit_VCL,
  sgcRichEdit_RTF_Reader, sgcRichEdit_HTML_Writer, sgcRichEdit_Markdown,
  sgcRichEdit_DOCX, sgcUIPDF_Export;

procedure TForm1.ConvertContract;
begin
  sgcVCLRichEdit1.LoadFromFile('contract.rtf');
  sgcVCLRichEdit1.SaveToFile('contract.html', refHTML);
  sgcVCLRichEdit1.SaveToFile('contract.md', refMarkdown);
  sgcVCLRichEdit1.SaveToFile('contract.docx', refDOCX);
  sgcVCLRichEdit1.ExportToPDF('contract.pdf');
  sgcVCLRichEdit1.ExportToPNG('page1.png', 0, 150);
end;

使い慣れた編集操作

ユーザーはワープロの操作習慣をそのまま持ち込みます。エディタは一般的なショートカット (Ctrl+B、Ctrl+I、Ctrl+U、配置、見出し、箇条書き、リンク用の Ctrl+K) に応答し、完全な元に戻す、やり直しの履歴を保持し、段落や表のセルをまたいでテキストを検索、置換します。

sgcRichEdit Editor—□✕
Editor デモの検索と置換バー

すべてのコマンドは、ExecuteCommand と CommandState を通じてコードから、また VCL と FireMonkey のアクションからも利用できます。そのため、独自のツールバーや sgcToolbar のリボンを選択範囲の状態と同期させられます。

uses
  sgcRichEdit_Commands;

procedure TForm1.btnBoldClick(Sender: TObject);
begin
  sgcVCLRichEdit1.ExecuteCommand(recBold);
end;

procedure TForm1.sgcVCLRichEdit1SelectionChange(Sender: TObject);
begin
  // the button shows the state of the selection
  btnBold.Down := sgcVCLRichEdit1.CommandState(recBold).Checked;
end;

文書をデータベースに保存

メモ、手紙、テンプレートは、たいていデータベースのフィールドに保存されます。TsgcVCLDBRichEdit と TsgcFMXDBRichEdit は TDataSource に接続し、メモフィールドと BLOB フィールドを読み込み、最初の変更でデータセットを編集モードにし、ユーザーがコントロールを離れると文書を書き戻します。Esc キーでフィールドの値に戻り、AutoDisplay は大きな文書を必要なときに読み込みます。

uses
  sgcRichEdit_Formats, sgcRichEdit_VCL_DB;

sgcVCLDBRichEdit1.DataSource := dsNotes;
sgcVCLDBRichEdit1.DataField := 'NOTE';
// store the documents as JSON; refAuto, the default, detects the format
sgcVCLDBRichEdit1.FieldFormat := refJSON;

ヘッドレス動作は Linux64 でも

文書の変換をサーバー側で行いたい場面は多くあります。ポータル向けに RTF を HTML へ、アーカイブ向けに JSON を PDF へ、サムネイル向けにページを PNG へ変換する、といった処理です。文書モデル、フォーマット、レイアウト、エクスポートは VCL や FireMonkey に依存しないため、Windows サービスや Linux64 デーモン (Delphi 10.2 以降) が、ウィンドウなしで文書の読み込み、変更、レンダリング、エクスポートを行えます。ページレイアウトはビジュアルコントロールと同じです。

uses
  sgcRichEdit_Model, sgcRichEdit_Formats, sgcRichEdit_Print,
  sgcRichEdit_RTF_Reader, sgcRichEdit_HTML_Writer, sgcUIPDF_Export;

var
  oDocument: TsgcRichDocument;
begin
  oDocument := TsgcRichDocument.Create;
  try
    sgcRichLoadFromFile(oDocument, 'letter.rtf');
    sgcRichSaveToFile(oDocument, 'letter.html', refHTML);
    // tagged PDF, no window and no VCL or FireMonkey needed
    sgcRichExportPDF(oDocument, nil, 'letter.pdf');
  finally
    oDocument.Free;
  end;
end;

.NET にも対応

WinForms、WPF、Avalonia 向けの .NET コントロールは、Delphi 版と同じ名前を使います。コアライブラリは .NET Standard 2.0、.NET Framework 4.7.2、.NET 6、8、9、10 を対象とし、DocumentText プロパティは 3 つのフレームワークすべてでデータにバインドできます。

using esegece.sgcRichEdit;
using esegece.sgcUICore;

// once at startup: PDF export through the esegece.sgcUICore.sgcPDF package
TsgcUIPDFExporter.Register();

richEdit.LoadFromFile("contract.rtf");
richEdit.SaveToFile("contract.html", TsgcRichEditFormat.refHTML);
richEdit.SaveToFile("contract.docx", TsgcRichEditFormat.refDOCX);
richEdit.ExportToPDF("contract.pdf");

デモを実行する

Delphi と C++ Builder のデモは sgcUI のトライアル版と一緒にインストールされ、.NET のデモは Registered 版の .NET ダウンロードに含まれています。

sgcRichEdit が含まれる製品

sgcRichEdit は Delphi と C++ Builder 向け、および .NET 向けに単体で販売されており、sgcUI Enterprise と All-Access バンドルにも含まれます。1 つのパッケージで sgcPDF も一緒にインストールされるため、PDF エクスポートは常に利用できます。無料の Community エディションはありません。詳細は価格ページをご覧ください。

ユーザーにワープロを届けましょう

sgcRichEdit は sgcUI 2026.11 で登場します。Delphi と C++ Builder では VCL と FireMonkey に、.NET では WinForms、WPF、Avalonia に対応します。

ご質問やフィードバックはありますか。お問い合わせください。コードを書いた開発者本人が返信します。