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种导出格式
5种 UI 框架
12种编辑器语言

每个业务应用程序迟早都需要真正的文档。CRM 要给客户写信,诊所管理工具要保存病历记录,ERP 要存放报价模板,服务台要用带格式的文本答复客户。对这些场景来说,普通的纯文本备忘录远远不够。

sgcRichEdit 是内置于 sgcUI 的完整文档编辑器。它维护一个真正的文档模型,包含命名样式、多级列表、支持合并单元格的表格、内嵌图像和超链接,并按页面对文档进行排版。同一个文档模型驱动 VCL、FireMonkey、WinForms、WPF 和 Avalonia 控件,也可以在没有任何窗口的情况下加载、转换和导出文档。

60 秒了解 sgcRichEdit

一分钟看完样式、表格、各种语言、浅色和深色、所有格式以及所有平台。也可以在 YouTube 观看。

真正的文档,而不是文本框

合同、报告和信函每次打开时外观都必须一致。sgcRichEdit 以命名样式保存段落,格式由样式链加直接格式共同决定,因此修改“标题 1”样式,就能一次性更改文档中的所有标题。

AaAaAa
命名样式内置正文、标题 1 至 6、标题、副标题、引用、代码、列表段落、超链接和表格网格等样式。
9 级列表支持项目符号、数字、字母和罗马数字,并提供升级或降级列表层级的命令。
表格支持跨列和跨行合并单元格、标题行、边框、背景以及嵌套表格。
图像和链接支持内嵌图像和超链接,可通过 Ctrl+单击打开,并提供 OnLinkClick 事件。
↺↻
撤销和重做完整的操作历史,输入内容按单词分组,因此每次撤销只会删除一个单词。
第三季度增长,欧洲市场增长
查找和替换可跨段落和表格单元格查找,支持正则表达式,全部替换只算一步撤销。

近距离观察

支持粗体、斜体、下划线、删除线、上标和下标,字体名称、大小、颜色和突出显示,以及对齐、缩进和行距。下图是上面这份文档的格式在 200% 缩放下的效果。

200% 缩放下的字符格式

表格、图像和页面

编辑器按自身的页面设置对文档分页。段落可按行拆分,表格的标题行会在每一页重复,分页符也会保留,因此所见即所得,所见即所印。Print 和 PrintPreview 可在桌面端使用,ExportToPNG 则可按您选择的分辨率渲染任意页面。

sgcRichEdit Editor—□✕
带有彩色标题行、合并单元格和内嵌图表图像的表格
文档第 1 页,已导出为 PNG
第 1 页
文档第 2 页,已导出为 PNG
第 2 页
文档第 3 页,已导出为 PNG
第 3 页

截图中文档的三个页面,由 ExportToPNG 以 150 DPI 输出。

支持各种语言,服务每一位用户

日语、中文和韩语用户通过输入法编辑器输入文字,阿拉伯语和希伯来语用户则从右向左书写,同一句话里往往还夹杂着英文单词。sgcRichEdit 会在插入点处内联显示 IME 组合文本,并将其作为一步撤销提交。双向文本段落能让插入点和选区停留在读者预期的位置,每个段落都有自己的文字方向。

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);

一份文档,支持所有格式

文档可能来自 Word 的 RTF,来自浏览器或电子邮件的 HTML,也可能来自开发者工具的 Markdown。sgcRichEdit 可以读写所有这些格式,并保留自己的原生 JSON 格式,用来存储文档的每一个细节。LoadFromFile 会自动识别格式,SaveToFile 按您指定的格式保存,AsHTML、AsRTF 和 AsMarkdown 则以字符串形式读写文档。

加载

RTF来自 Word
HTML含 CSS
Markdown含表格
JSON原生
一个文档模型 样式、列表、表格、图像和链接,按页面排版

保存和导出

DOCX供 Word 使用
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 的 Action 使用,因此您自己的工具栏或 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,读取 memo 和 BLOB 字段,在首次修改时将数据集切换到编辑模式,并在用户离开控件时写回文档。按 Escape 可恢复字段值,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 属性在这三个框架中都可以绑定到您的数据。

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 套装中。单独的安装包会同时安装 sgcPDF,因此 PDF 导出始终可用。没有免费的 Community 版。详情请参阅价格页面。

为您的用户提供一个文字处理器

sgcRichEdit 随 sgcUI 2026.11 推出,适用于 Delphi 和 C++ Builder 的 VCL 与 FireMonkey,以及 .NET 的 WinForms、WPF 和 Avalonia。

有问题或反馈?请联系我们,您将收到编写这些代码的人员的答复。