2

TWebBrowser曾经在我的应用程序中有 HTML 编辑器,当然它取决于安装的 Internet Explorer 的版本。在 Windows 7 上安装全新的 Internet Explorer 11 后,我注意到我的编辑器发生了变化。段落似乎不再具有相同的 HTML 代码。

在我按下回车键之前生成的 HTML:

<P>&nbsp;</P>

现在生成的 HTML:

<P><BR></P>

这在我的编辑器中给了我额外的行,看起来不正确。<P>本身有新线,<BR>在这里完全没用。

有没有办法在编辑模式下告诉 MSHTML/TWebBrowser 控件在按下回车键时使用哪个标记?例如,我看到一些 MS 程序生成:

<div><font></font></div>

当您按 Enter 进入新行时。

另外(如果相关) - 有没有办法控制当我使用命令设置例如字体大小时将使用哪个标记(而不是过时的 size=1 到 size=7 可能有 CSS 像“font-size :10 像素")

欢迎使用 Delphi 和 C++ Builder 中的代码示例。

4

1 回答 1

1

使用bcbhtml:首先将 html.cpp 添加到您的项目中并包含“html.h”:

#include "html.h"

在全局范围内定义文档变量:

THTMLDocument document;

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    WebBrowser1->Navigate("about:<div contenteditable=true>Type here</div>"); // example editable region
}

void __fastcall TForm1::WebBrowser1DocumentComplete(TObject *ASender, const IDispatch *pDisp,
          const OleVariant &URL)
{
    document.documentFromVariant(WebBrowser1->Document);
    document.onkeydown = &onkeydown;
}

void TForm1::onkeydown()
{
    EventObj event = document.parentWindow.event;
    if(event.keyCode == VK_RETURN)
    {
        document.selection.createRange().pasteHTML("<P>&nbsp;</P>"); // You can put every html you like per every key code
        event.returnValue = false; // blocks default html which will be generated
    }
}

你可以从这里下载这个很棒的包装器 (bcbhtml) 。

于 2013-11-12T19:13:04.943 回答