Hola Americo,
Excelente pregunta sobre componentes RichEdit para Unigui. Te comento las opciones disponibles:
Situación Actual:
Unigui no incluye un componente RichEdit nativo en su distribución estándar, ya que se basa en ExtJS para el frontend y la arquitectura web presenta desafíos diferentes al desarrollo VCL tradicional.
Alternativas y Soluciones:
1. TinyMCE (Recomendado - Open Source)
- Editor WYSIWYG basado en HTML5
- Licencia: LGPL 2.1 (gratuito para uso comercial)
- Integración mediante TUniHTMLFrame o TUniURLFrame
- Soporta formato RTF mediante conversión HTML↔RTF
- URL:
https://www.tiny.cloud/
2. CKEditor (Open Source)
- Muy popular y robusto
- Licencia: GPL/LGPL/MPL
- Excelente para aplicaciones empresariales
- Integración similar a TinyMCE
- URL:
https://ckeditor.com/
3. Quill Editor (Open Source)
- Moderno y ligero
- Licencia: BSD
- API simple y extensible
- URL:
https://quilljs.com/
4. Froala Editor (Comercial)
- Licencia comercial (~$349 USD)
- Interfaz muy pulida
- Soporte técnico incluido
- URL:
https://froala.com/
Cómo Integrarlos en Unigui:
Código:
// Método 1: Usando TUniHTMLFrame
procedure TMainForm.UniFormCreate(Sender: TObject);
begin
UniHTMLFrame1.HTML :=
'<script src="https://cdn.tiny.cloud/1/YOUR_API_KEY/tinymce/6/tinymce.min.js"></script>' +
'<textarea id="editor"></textarea>' +
'<script>' +
' tinymce.init({' +
' selector: "#editor",' +
' plugins: "lists link image",' +
' toolbar: "undo redo | bold italic | alignleft aligncenter alignright"' +
' });' +
'</script>';
end;
// Método 2: Archivo HTML externo
// Crea un archivo HTML con el editor y cárgalo con TUniURLFrame
UniURLFrame1.URL := 'files/richeditor.html';
// Para obtener/establecer contenido:
procedure TMainForm.GetEditorContent;
var
Content: string;
begin
UniSession.AddJS(
'tinymce.get("editor").getContent({format: "text"});'
);
end;
procedure TMainForm.SetEditorContent(AContent: string);
begin
UniSession.AddJS(
'tinymce.get("editor").setContent("' + AContent + '");'
);
end;
Manejo de RTF:
Si necesitas trabajar específicamente con formato RTF (no HTML):
1. En servidor: Usa componentes Delphi como TRichEdit (VCL) o librerías de conversión RTF↔HTML
2. Convierte RTF a HTML antes de enviarlo al navegador
3. Al guardar, convierte HTML a RTF en el servidor
Bibliotecas útiles para conversión:
- HTMLTidy
- MarkdownDeep
- Converter libraries específicas RTF↔HTML
Componentes Comerciales para Unigui:
Aunque no hay componentes específicos "RichEdit para Unigui", algunos vendors ofrecen:
1.
TMS Web Core RichEdit (puede adaptarse)
2. Componentes personalizados de terceros en el foro de Unigui
3. Desarrollos a medida integrando editores JavaScript
Recomendación Final:
Para la mayoría de casos, te sugiero:
-
TinyMCE si necesitas solución gratuita y robusta
-
Froala si tienes presupuesto y quieres soporte premium
- Implementar conversión RTF↔HTML en servidor si trabajas con archivos RTF legacy
Ejemplo completo:
Puedes encontrar ejemplos de integración en:
- Foro oficial Unigui:
https://forums.unigui.com/
- Repositorio GitHub con demos de TinyMCE + Unigui
Si necesitas ayuda específica con la implementación, no dudes en preguntar.
Saludos,
Jhonny