J'ai besoin de trouver un composant d'éditeur HTML WYSIWYG de base pour C++ Builder 5 pour permettre aux utilisateurs de créer du texte simple que je vais coller dans un modèle de page HTML existant. Juste un soutien simple pour créer des liens, ajouter des images, utiliser les en-têtes/gras/italique.Éditeur HTML pour CBuilder/Delphi
Répondre
Vous pouvez déposer une TWebBrowser sur un formulaire et permettent DesignMode sur elle, comme ceci:
// Delphi code..
(WebBrowser1.Document as IHTMLDocument2).designMode := 'on';
Après l'exécution de la ligne ci-dessus, la page sera modifiable. Vous pouvez taper du texte supplémentaire, supprimer, etc. Si vous voulez faire des sélections en gras ou insérer des images, vous devrez ajouter quelques boutons pour programmer cela. Le truc cool est que vous pouvez le faire soit à partir de Delphi (ou constructeur C++ dans votre cas) ou vous pouvez ajouter javascript sur la page pour éditer lui-même.
Le contenu de la page peuvent être récupérés à partir
(WebBrowser.Document as IHTMLDocument2).body.innerHTML;
Rappelez-vous que (comme WebBrowser.Document IHTMLDocument2) pourrait être nul.
Quoi qu'il en soit, je peux imaginer qu'il ya des composants autour qui font tout le travail pour vous, ce qui est probablement une meilleure route à prendre que de réinventer la roue.
Je recommanderais TRichView en raison de son support de classe mondiale et de son ensemble de fonctionnalités avancées. Bien que ce ne soit pas un vrai éditeur "HTML", il supporte la possibilité d'exporter en HTML, en générant même 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 soit RTF (étendu pour mieux prendre en charge les images), soit en tant que format propriétaire. Il existe de nombreux exemples d'éditeurs simples qui pourraient facilement répondre à vos besoins.
J'ai utilisé TRichView pendant près de 10 ans. C'est bien, mais peut-être trop pour un simple éditeur. Le seul défaut est qu'il ne gère pas encore l'alignement des images. Nous avons travaillé sur Sergey pendant des années en essayant de l'amener à l'ajouter. Ça a toujours été ... la prochaine version. (Peut-être que ce commentaire l'aura sur lui). – lkessler
en C++ Builder, ce serait quelque chose comme 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();
}
}
//---------------------------------------------------------------------------
fournit un ensemble gratuit de EmbeddedWebBrowser
composants avec un composant Modifier Designer que vous liez à la fenêtre EmbeddedBrowser
pour contrôler le mode de conception et avoir le contrôle d'édition enregistrer dans un fichier, insérer des liens, des images, etc ...
semble bien fonctionner!
- 1. éditeur HTML WYSIWYG pour le code php
- 2. Éditeur VML/SVG en HTML Page
- 3. Éditeur HTML - Ajax Ajax Control ToolKit
- 4. Vous recommande un éditeur html textarea?
- 5. Éditeur XML pour OS X
- 6. Pouvez-vous suggérer un éditeur Web WYSIWYG non-HTML?
- 7. Flex: Est-ce que quelqu'un connaît un bon éditeur HTML?
- 8. WYSIWYG éditeur HTML/CSS qui peut générer div, float, padding
- 9. Éditeur pour la programmation à distance
- 10. Création d'un éditeur html wysiwyg pour l'édition de modèles d'e-mail
- 11. WPF Éditeur WYSIWYG
- 12. Éditeur Flash
- 13. Javascript HAML éditeur
- 14. Source éditeur pour l'onglet dans Netbeans 6.5
- 15. Éditeur JSON, de préférence pour Visual Studio
- 16. Éditeur binaire Mach-O pour OSX?
- 17. Gratuit RTE [éditeur de texte enrichi] aide nécessaire pour l'intégrer
- 18. Meilleur éditeur Java GUI
- 19. Quel éditeur WYSIWYM utiliser?
- 20. Éditeur Visual Studio 2008
- 21. éditeur d'image amical ASP.NET
- 22. WCF - Éditeur/Abonné - Événement
- 23. Autorun.inf - Éditeur non spécifié
- 24. Quelle est la meilleure façon d'analyser HTML à partir d'un éditeur de texte enrichi en Perl?
- 25. Éditeur de profil de contours Homesite
- 26. ERB Ruby Templates - Éditeur en ligne
- 27. Existe-t-il une implémentation Ajax gratuite d'un éditeur HTML pouvant être utilisé dans le navigateur?
- 28. Format IDE/éditeur standard pour l'expansion des extraits de code?
- 29. Éditeur XML pour Linux via un accès SSH?
- 30. Éditeur d'images basé sur des objets pour Windows
J'espérais avoir un composant qui a déjà tous les boutons inclus - quelque chose comme un bébé Frontpage – Riho
Si vous avez RADPHP, jetez un oeil sur le dossier 'Embarcadero \ RadPHP \ 3.0 \ plugins \'. Vous trouverez 'uHTMLEdit.pas' et' uHTMLEdit.dfm'. C'est un éditeur HTML à une forme qui n'a pas de dépendances autres que la VCL standard. –
@WoutervanNifterick - J'ai essayé cette unité, mais elle ne fonctionnera pas avec les fichiers MOST html: http://www.stackoverflow.com/questions/39594393/twebbrowser-crashes-with-some-html-files – Ampere