Ver Mensaje Individual
  #2  
Antiguo 27-10-2025
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.070
Reputación: 32
jhonny Va camino a la famajhonny Va camino a la fama
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
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita