2

アプリケーションに HTML エディターを使用TWebBrowserしていましたが、もちろん、インストールされている Internet Explorer のバージョンによって異なります。Windows 7 に新しい Internet Explorer 11 をインストールした後、エディターが変更されていることに気付きました。段落に同じ HTML コードがないように見える。

Enterキーを押す前に生成されたHTML:

<P>&nbsp;</P>

現在生成されている HTML:

<P><BR></P>

これにより、正しくないように見える追加の行がエディターに表示されます。<P>それ自体に新しい行があり、<BR>ここではまったく役に立ちません。

Enter キーが押されたときに使用するマークアップを編集モードで MSHTML/TWebBrowser コントロールに指示する方法はありますか? たとえば、いくつかの MS プログラムが生成するのを見てきました:

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

Enter キーを押して改行します。

また(関連している場合)-コマンドを使用してfont-sizeなどを設定するときに使用されるマークアップを制御する方法はありますか(時代遅れのsize = 1からsize = 7の代わりに、「font-size」のようなCSSを持つ:10px")

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 に答える