Domanda

Devo trovare il componente base dell'editor HTML WYSIWYG per C ++ Builder 5 per consentire agli utenti di creare del testo semplice che incollerò nel modello di pagina HTML esistente. È sufficiente un semplice supporto per creare collegamenti, aggiungere immagini, utilizzare le intestazioni / grassetto / corsivo.

È stato utile?

Soluzione

Puoi rilasciare un TWebBrowser su un modulo e abilitare designmode su di esso, in questo modo:

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

Dopo aver eseguito la riga sopra, la pagina sarà modificabile. È possibile digitare del testo aggiuntivo, eliminare, ecc. Se si desidera rendere le selezioni in grassetto o inserire immagini, è necessario aggiungere alcuni pulsanti per programmarlo. La cosa interessante è che puoi farlo da Delphi (o dal builder C ++ nel tuo caso) oppure puoi aggiungere javascript nella pagina per modificarlo.

I contenuti della pagina possono essere recuperati da

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

Ricorda che (WebBrowser.Document come IHTMLDocument2) potrebbe essere nullo.


In ogni caso, posso immaginare che ci siano componenti intorno che fanno tutto il lavoro per te, il che è probabilmente un percorso migliore da intraprendere che reinventare la ruota.

Altri suggerimenti

Vorrei raccomandare TRichView grazie al suo supporto di livello mondiale e al profondo set di funzionalità. Sebbene non sia un vero " HTML " editor, supporta la possibilità di esportare in HTML, anche generando gli stili CSS appropriati, se necessario. Lo uso per gestire la porzione di posta elettronica del nostro prodotto principale e funziona molto bene. Internamente lo spazio di archiviazione è RTF (esteso per supportare meglio le immagini) o come formato proprietario. Ci sono molti esempi di semplici editor che si adattano facilmente alle tue esigenze.

in C ++ Builder, sarebbe qualcosa del genere:

(wb è 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/

fornisce un set gratuito di componenti EmbeddedWebBrowser con un componente Edit Designer che si collega alla finestra EmbeddedBrowser per controllare la modalità di progettazione e disporre del controllo di modifica salva su file, inserisci collegamenti, immagini, ecc ...

sembra funzionare bene!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top