Pregunta

Necesito encontrar un componente básico del editor HTML WYSIWYG para C ++ Builder 5 para permitir a los usuarios crear un texto simple que pegaré en la plantilla de página HTML existente. Solo un soporte simple para crear enlaces, agregar imágenes, usar encabezados / negrita / cursiva.

¿Fue útil?

Solución

Puede colocar un TWebBrowser en un formulario y habilitar el modo de diseño en él, de esta manera:

// Delphi code..
(WebBrowser1.Document as IHTMLDocument2).designMode := 'on';

Después de ejecutar la línea anterior, la página será editable. Puede escribir texto adicional, eliminar, etc. Si desea hacer selecciones en negrita o insertar imágenes, tendrá que agregar algunos botones para programarlo. Lo bueno es que puedes hacerlo desde Delphi (o C ++ builder en tu caso) o puedes agregar javascript en la página para editarlo.

El contenido de la página se puede recuperar de

(WebBrowser.Document as IHTMLDocument2).body.innerHTML;

Recuerde que (WebBrowser.Document as IHTMLDocument2) podría ser nulo.


De todos modos, puedo imaginar que hay componentes que hacen todo el trabajo por ti, lo que probablemente sea una mejor ruta que reinventar la rueda.

Otros consejos

Recomendaría TRichView debido a su soporte de clase mundial y su amplio conjunto de funciones. Si bien no es un verdadero "HTML" editor, admite la capacidad de exportar a HTML, incluso generando los estilos CSS adecuados si es necesario. Lo uso para manejar la parte de correo electrónico de nuestro producto principal y funciona muy bien. Internamente, el almacenamiento es RTF (extendido para admitir mejor las imágenes) o como un formato propietario. Hay muchos ejemplos de editores simples que se adaptarían fácilmente a sus necesidades.

en C ++ Builder, sería algo como esto:

(wb es un TCppWebBrowser)

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "mshtml.h"

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SHDocVw_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnNavigateAndEditClick(TObject *Sender)
{
        wb->Navigate((WideString)"www.google.com");
        while (wb->Busy)
                Application->ProcessMessages();

        if (wb->Document)
        {
                IHTMLDocument2 *html;
                wb->Document->QueryInterface<IHTMLDocument2>(&html);
                html->put_designMode(L"On");
                html->Release();
        }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnInsertImageClick(TObject *Sender)
{
    if (wb->Document)
    {
          IHTMLDocument2 *html;
          wb->Document->QueryInterface<IHTMLDocument2>(&html);
          VARIANT var;
          VARIANT_BOOL receive;
          html->execCommand(L"InsertImage",true,var, &receive);
          html->Release();
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnGetHtmlClick(TObject *Sender)
{
        if (wb->Document)
        {
                IHTMLDocument2 *html;
                wb->Document->QueryInterface<IHTMLDocument2>(&html);
                IHTMLElement *pElement;
                html->get_body(&pElement);
                pElement->get_parentElement(&pElement);
                wchar_t *tmp;
                pElement->get_outerHTML(&tmp);
                Memo1->Lines->Text = tmp;
                pElement->Release();
                html->Release();
        }
}
//---------------------------------------------------------------------------

http://www.bsalsa.com/

proporciona un conjunto gratuito de componentes EmbeddedWebBrowser con un componente Edit Designer que enlaza con la ventana EmbeddedBrowser para controlar el modo de diseño y tener control de edición guardar en un archivo, insertar enlaces, imágenes, etc. ...

parece funcionar bien!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top