BCB2009
Код | //--------------------------------------------------------------------------- #include <vcl.h> #include <mshtml.h>
#pragma hdrstop
#include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "shdocvw_ocx" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void SearchText(TCppWebBrowser* Browser, UnicodeString TxtToFind, bool Highlight) { if (!Browser) return; if (!Browser->Busy && Browser->Document) { IHTMLDocument2 *pDoc = 0; Browser->Document->QueryInterface(&pDoc); if (pDoc) { IMarkupServices *pMS = 0; IMarkupContainer * pMC = 0; Browser->Document->QueryInterface(&pMS); Browser->Document->QueryInterface(&pMC); if (pMC && pMS) { IMarkupPointer *pBegin(0), *pEnd(0); pMS->CreateMarkupPointer(&pBegin); pMS->CreateMarkupPointer(&pEnd); pBegin->SetGravity(POINTER_GRAVITY_Right); pEnd->SetGravity(POINTER_GRAVITY_Left); pBegin->MoveToContainer(pMC, TRUE); pEnd->MoveToContainer(pMC, FALSE); while (true) { HRESULT Res = pBegin->FindText(TxtToFind.w_str(), 0, pEnd, NULL); if (S_FALSE == Res) break; IHTMLElement *pFontEl; if (Highlight) { Res = pMS->CreateElement(TAGID_FONT, L"COLOR=#000000 STYLE=\"background-color:#C0DCC0\"", &pFontEl); Res = pMS->InsertElement(pFontEl, pBegin, pEnd); pBegin->MoveToPointer(pEnd); } else { Res = pBegin->CurrentScope(&pFontEl); Res = pMS->RemoveElement(pFontEl); pBegin->MoveToPointer(pEnd); } } pBegin->Release(); pEnd->Release(); pMC->Release(); pMS->Release(); } } pDoc->Release(); } else ShowMessage("I am not ready!"); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // Открыть страницу CppWebBrowser1->Navigate2(&TVariant("http://google.com/")); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { // Выделить всё найденное SearchText(CppWebBrowser1, "Поиск", true); } //---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender) { // Снять выделение с найденного SearchText(CppWebBrowser1, "Поиск", false); } //---------------------------------------------------------------------------
|
|