用于CBuilder/Delphi的HTML编辑器

用于CBuilder/Delphi的HTML编辑器,delphi,components,c++builder,Delphi,Components,C++builder,我需要找到C++Builder 5的基本WYSIWYG HTML编辑器组件,让用户创建一些简单的文本,我将粘贴到现有的HTML页面模板中。 只需提供创建链接、添加图像、使用标题/粗体/斜体的简单支持。您可以在表单上放置TWebBrowser并启用设计模式,如下所示: // Delphi code.. (WebBrowser1.Document as IHTMLDocument2).designMode := 'on'; 执行上述行后,页面将可编辑。你可以输入额外的文本、删除等。如果你想选择加粗

我需要找到C++Builder 5的基本WYSIWYG HTML编辑器组件,让用户创建一些简单的文本,我将粘贴到现有的HTML页面模板中。
只需提供创建链接、添加图像、使用标题/粗体/斜体的简单支持。

您可以在表单上放置TWebBrowser并启用设计模式,如下所示:

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

执行上述行后,页面将可编辑。你可以输入额外的文本、删除等。如果你想选择加粗或插入图像,你必须添加一些按钮来编程。最酷的是,您可以从Delphi(或者在您的案例中使用C++ Builder)来做这件事,或者您可以在页面上添加JavaScript来编辑自己。p> 可以从以下位置检索页面内容:

(WebBrowser.Document as IHTMLDocument2).body.innerHTML;
请记住(WebBrowser.Document作为IHTMLDocument2)可以为零



无论如何,我可以想象周围有一些组件可以为您完成所有的工作,这可能是比重新发明轮子更好的方法。

我推荐使用它,因为它提供了世界级的支持和深入的功能集。虽然它不是一个真正的“HTML”编辑器,但它确实支持导出为HTML的功能,甚至在必要时生成适当的CSS样式。我使用它来处理我们主要产品的电子邮件部分,它工作得非常好。在内部,存储要么是RTF(扩展以更好地支持图像),要么是专有格式。有很多简单编辑器的例子,这些编辑器很容易满足你的需要。在C++ Builder中,

< P> >,将是这样的:

// Delphi code..
(WebBrowser1.Document as IHTMLDocument2).designMode := 'on';
(wb是一个TCppWebBrowser)

//---------------------------------------------------------------------------
#包括
#布拉格语hdrstop
#包括“mshtml.h”
#包括“Unit1.h”
//---------------------------------------------------------------------------
#pragma包(智能初始化)
#pragma链接“SHDocVw_OCX”
#pragma资源“*.dfm”
TForm1*Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent*Owner)
:t表格(所有者)
{
}
//---------------------------------------------------------------------------
void u fastcall TForm1::btnNavigateAndEditClick(TObject*Sender)
{
wb->导航((WideString)“www.google.com”);
while(wb->Busy)
应用程序->处理消息();
如果(wb->文档)
{
IHTMLDocument2*html;
wb->文档->查询接口(&html);
html->put_设计模式(L“On”);
html->Release();
}
}
//---------------------------------------------------------------------------
void uu fastcall TForm1::btn插入图像单击(对象*发送方)
{
如果(wb->文档)
{
IHTMLDocument2*html;
wb->文档->查询接口(&html);
变异变量;
变型布尔接收;
html->execCommand(L“InsertImage”、true、var和receive);
html->Release();
}
}
//---------------------------------------------------------------------------
void _fastcall TForm1::btnGetHtmlClick(TObject*发送方)
{
如果(wb->文档)
{
IHTMLDocument2*html;
wb->文档->查询接口(&html);
ihtmlement*pElement;
html->get_body(&pElement);
pElement->get_parentElement(&pElement);
wchar_t*tmp;
pElement->get_outerHTML(&tmp);
备忘录1->行->文本=tmp;
pElement->Release();
html->Release();
}
}
//---------------------------------------------------------------------------

提供一组免费的
EmbeddedWebBrowser
组件和编辑设计器组件 链接到
EmbeddedBrowser
窗口以控制设计模式并具有编辑控制 保存到文件、插入链接、图像等


看来效果不错

我希望有一个已经包含所有按钮的组件——比如婴儿FrontPage如果你有RADPHP,请查看
Embarcadero\RADPHP\3.0\plugins`文件夹。您将找到
uHTMLEdit.pas`和
uHTMLEdit.dfm
。这是一个单表单HTML编辑器,除了标准VCL之外没有其他依赖项。@WoutervanNifterick-我尝试过这个单元,但它不能处理大多数HTML文件:“执行上述行后,页面将可编辑。”我必须添加webBrowser1.Navigate('about:blank');在此之前,我会得到一个例外——大概是因为没有页面。我已经使用TRichView将近10年了。这是很好的,但对于一个简单的编辑器来说可能有点过头了。一个缺陷是它还不能处理图像的对齐。多年来,我们一直在研究谢尔盖,试图让他加入进来。一直都是。。。下一版本。(也许这句话会激怒他)。