sgcRichEdit: um processador de texto dentro da sua própria aplicação

· Componentes
sgcRichEdit: um processador de texto dentro da sua própria aplicação | Blog eSeGeCe
✦  sgcUI · sgcRichEdit

Um processador de texto.
Dentro da sua aplicação.

sgcRichEdit é o novo editor de documentos de texto rico do sgcUI. Seus usuários escrevem cartas, contratos, anotações e relatórios com estilos, listas, tabelas, imagens e links. Seu código lê e grava RTF, HTML, Markdown e JSON, e exporta páginas em DOCX, PDF e PNG.

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

↔  Arraste o controle para alternar do tema claro para o escuro

sgcRichEdit Editor—□✕
A demo sgcRichEdit Editor com o preset Fluent, tema claro
O mesmo documento com o preset Fluent, tema escuro
ClaroEscuro
4formatos de entrada e saída
3formatos de exportação
5frameworks de UI
12idiomas do editor

Mais cedo ou mais tarde, toda aplicação empresarial precisa de documentos de verdade. Um CRM escreve cartas para clientes, um sistema de gestão de consultório guarda anotações de casos, um ERP armazena modelos de orçamento e um help desk responde com texto formatado. Um simples bloco de notas não basta para nada disso.

sgcRichEdit é um editor de documentos completo, integrado ao sgcUI. Ele mantém um modelo de documento real, com estilos nomeados, listas de vários níveis, tabelas com células mescladas, imagens embutidas e hiperlinks, e organiza o documento em páginas. Um único modelo de documento alimenta os controles VCL, FireMonkey, WinForms, WPF e Avalonia, e o mesmo modelo carrega, converte e exporta documentos sem nenhuma janela.

sgcRichEdit em 60 segundos

Estilos, tabelas, todos os idiomas, tema claro e escuro, todos os formatos e todas as plataformas em um minuto. Também no YouTube.

Um documento de verdade, não uma caixa de texto

Contratos, relatórios e cartas precisam ter sempre a mesma aparência quando são abertos. O sgcRichEdit armazena parágrafos com estilos nomeados, e a formatação vem de uma cadeia de estilos mais a formatação direta, de modo que alterar o estilo Título 1 muda todos os títulos do documento de uma só vez.

AaAaAa
Estilos nomeadosNormal, Título 1 a 6, Título, Subtítulo, Citação, Código, Parágrafo de Lista, Hiperlink e Grade de Tabela já vêm incluídos.
Listas com 9 níveisMarcadores, números, letras e algarismos romanos, com um comando para subir ou descer um nível.
TabelasCélulas mescladas entre colunas e linhas, linhas de cabeçalho, bordas, fundos e tabelas aninhadas.
Imagens e linksImagens embutidas e hiperlinks, com Ctrl+clique e um evento OnLinkClick.
↺↻
Desfazer e refazerUm histórico completo, com a digitação agrupada em palavras, de modo que um desfazer remove uma palavra.
crescimento no T3, crescimento na Europa
Localizar e substituirEntre parágrafos e células de tabela, com expressões regulares e Substituir Tudo como uma única etapa de desfazer.

Em detalhe

Negrito, itálico, sublinhado, tachado, sobrescrito e subscrito, nomes e tamanhos de fonte, cores e realces, alinhamento, recuos e espaçamento entre linhas. Aqui está a formatação do documento acima com zoom de 200%.

Formatação de caracteres com zoom de 200%

Tabelas, imagens e páginas

O editor pagina o documento com suas próprias configurações de página. Os parágrafos são divididos por linhas, as linhas de cabeçalho de uma tabela se repetem em cada página e as quebras de página são respeitadas, de modo que o que o usuário vê é o que ele imprime. Print e PrintPreview funcionam no desktop, e ExportToPNG renderiza qualquer página na resolução que você escolher.

sgcRichEdit Editor—□✕
Uma tabela com linha de cabeçalho colorida, uma célula mesclada e a imagem de um gráfico embutido
Página 1 do documento, exportada para PNG
Página 1
Página 2 do documento, exportada para PNG
Página 2
Página 3 do documento, exportada para PNG
Página 3

As três páginas do documento das capturas de tela, geradas por ExportToPNG a 150 DPI.

Todos os idiomas, todos os usuários

Usuários de japonês, chinês e coreano digitam por meio de um editor de método de entrada, e usuários de árabe e hebraico escrevem da direita para a esquerda, muitas vezes com palavras em inglês na mesma frase. O sgcRichEdit mostra a composição do IME diretamente no cursor e a confirma como uma única etapa de desfazer. Os parágrafos bidirecionais mantêm o cursor e a seleção onde o leitor espera, e cada parágrafo tem a sua própria direção.

sgcRichEdit Editor—□✕
Texto em árabe da direita para a esquerda misturado com inglês, e parágrafos em japonês, chinês, coreano e russo, tema escuro

Claro, escuro, Fluent ou Clássico

O sgcRichEdit é um controle do sgcUI, portanto segue o tema da aplicação como o restante da suíte. Escolha o preset Fluent e o editor e a ribbon ganham o visual do Windows 11. Mude para o tema escuro e a ribbon, a barra de status e o backstage ficam escuros, enquanto a página continua branca, como o papel.

sgcRichEdit Editor—□✕
sgcRichEdit com o preset Fluent, tema claro
sgcRichEdit com o preset Clássico
sgcRichEdit com o preset Fluent, tema escuro
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);

Um documento, todos os formatos

Os documentos chegam como RTF vindo do Word, como HTML vindo de um navegador ou de um e-mail e como Markdown vindo de uma ferramenta de desenvolvimento. O sgcRichEdit lê e grava todos eles e mantém o seu próprio formato JSON nativo, que armazena cada detalhe do documento. LoadFromFile detecta o formato, SaveToFile usa o formato que você pedir, e AsHTML, AsRTF e AsMarkdown leem e gravam o documento como string.

Carregar

RTFdo Word
HTMLcom CSS
Markdowncom tabelas
JSONnativo
Um único modelo de documento Estilos, listas, tabelas, imagens e links, organizados em páginas

Salvar e exportar

DOCXpara o Word
PDFcom tags
PNGqualquer DPI
RTF, HTML, MDe JSON

Cada unit de formato na cláusula uses registra o seu leitor ou gravador, e sgcUIPDF_Export conecta a exportação para PDF ao motor sgcPDF, que é instalado junto com o 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;

Uma edição que parece familiar

Os usuários levam consigo os hábitos do seu processador de texto. O editor responde aos atalhos de sempre (Ctrl+B, Ctrl+I, Ctrl+U, alinhamento, títulos, marcadores e Ctrl+K para links), mantém um histórico completo de desfazer e refazer, e localiza e substitui texto entre parágrafos e células de tabela.

sgcRichEdit Editor—□✕
A barra de localizar e substituir da demo Editor

Todos os comandos estão disponíveis por código, com ExecuteCommand e CommandState, e por meio de actions da VCL e do FireMonkey, de modo que a sua própria barra de ferramentas ou uma ribbon sgcToolbar fica sempre sincronizada com a seleção.

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;

Seus documentos, no seu banco de dados

Anotações, cartas e modelos costumam ficar em um campo de banco de dados. TsgcVCLDBRichEdit e TsgcFMXDBRichEdit se conectam a um TDataSource, leem campos memo e BLOB, colocam o dataset em modo de edição na primeira alteração e gravam o documento de volta quando o usuário sai do controle. Esc restaura o valor do campo, e AutoDisplay carrega documentos grandes sob demanda.

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;

Sem interface, até no Linux64

Muitas vezes é preciso converter documentos em um servidor: RTF para HTML em um portal, JSON para PDF em um arquivo morto, uma página para PNG como miniatura. O modelo de documento, os formatos, o layout e as exportações não dependem de VCL nem de FireMonkey, então um serviço do Windows ou um daemon Linux64 (Delphi 10.2 e posteriores) pode carregar, alterar, renderizar e exportar documentos sem janela, com o mesmo layout de página dos controles visuais.

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;

Para .NET também

Os controles .NET para WinForms, WPF e Avalonia usam os mesmos nomes dos controles Delphi. A biblioteca principal tem como alvo .NET Standard 2.0, .NET Framework 4.7.2 e .NET 6, 8, 9 e 10, e a propriedade DocumentText se vincula aos seus dados nos três frameworks.

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

Execute as demos

As demos para Delphi e C++ Builder são instaladas com o trial do sgcUI, e as demos .NET acompanham o download Registered do .NET.

Onde o sgcRichEdit está incluído

O sgcRichEdit é vendido separadamente para Delphi e C++ Builder e para .NET, e está incluído no sgcUI Enterprise e no pacote All-Access. O pacote único instala também o sgcPDF, de modo que a exportação para PDF sempre funciona. Não existe edição Community gratuita. Veja a página de preços para mais detalhes.

Dê um processador de texto aos seus usuários

O sgcRichEdit chega com o sgcUI 2026.11 para Delphi e C++ Builder, em VCL e FireMonkey, e para .NET em WinForms, WPF e Avalonia.

Dúvidas ou comentários? Fale conosco, você receberá a resposta de quem escreveu o código.