Question

Je dois trouver le composant de base de l'éditeur HTML WYSIWYG pour C ++ Builder 5 afin de permettre aux utilisateurs de créer un texte simple que je vais coller dans le modèle de page HTML existant. Juste un simple support pour créer des liens, ajouter des images, utiliser des en-têtes / gras / italique.

Était-ce utile?

La solution

Vous pouvez déposer un TWebBrowser sur un formulaire et activer le mode design sur celui-ci, comme suit:

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

Après avoir exécuté la ligne ci-dessus, la page sera éditable. Vous pouvez taper du texte supplémentaire, supprimer, etc. Si vous souhaitez faire des sélections en gras ou insérer des images, vous devrez ajouter des boutons pour le programmer. La bonne chose est que vous pouvez le faire depuis Delphi (ou le constructeur C ++ dans votre cas) ou vous pouvez ajouter du javascript sur la page pour le modifier lui-même.

Le contenu de la page peut être récupéré à partir de

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

N'oubliez pas que (WebBrowser.Document sous la forme IHTMLDocument2) peut être nul.

Quoi qu’il en soit, j’imagine qu’il existe des composants autour de vous qui font tout le travail, ce qui est probablement une meilleure voie à suivre que de réinventer la roue.

Autres conseils

Je recommanderais TRichView en raison de son support de classe mondiale et de son ensemble de fonctionnalités approfondies. Bien que ce ne soit pas un vrai " HTML " éditeur, il prend en charge la possibilité d’exporter au format HTML, voire même de générer les styles CSS appropriés si nécessaire. Je l'utilise pour gérer la partie email de notre produit principal et cela fonctionne très bien. En interne, le stockage est au format RTF (étendu pour mieux prendre en charge les images) ou en tant que format propriétaire. Il existe de nombreux exemples d'éditeurs simples qui conviendraient facilement à vos besoins.

dans C ++ Builder, cela ressemblerait à ceci:

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

fournit un ensemble gratuit de composants EmbeddedWebBrowser avec un composant Edit Designer que vous vous connectiez à la fenêtre EmbeddedBrowser pour contrôler le mode Création et disposer du contrôle de modification enregistrer dans un fichier, insérer des liens, des images, etc.

semble bien fonctionner!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top