Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск в СppWebBrowser 
V
    Опции темы
ROKI
Дата 3.2.2009, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 26.5.2008

Репутация: нет
Всего: нет



Привет всем !!! Каким способом можно осуществить поиск введенной из клавы строки, на текущей странице в СppWebBrowser ??
PM MAIL   Вверх
Dmi3ev
Дата 3.2.2009, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



CTRL+F и ничего делать не надо  smile

а так есть 
http://msdn.microsoft.com/en-us/library/aa741525.aspx
может там что-то найдешь.
если просто надо поискать на странице, то можно и так
Код

NMHTTP1->Get("www.yandex.ru");
Memo1->Text=NMHTTP1->Body;

а потом уже там что-то найти.
можно еще варианты предложить...
хотя первый самый классный...  smile 

Это сообщение отредактировал(а) Dmi3ev - 3.2.2009, 01:49


--------------------

PM MAIL   Вверх
ROKI
Дата 3.2.2009, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 26.5.2008

Репутация: нет
Всего: нет



Цитата

http://msdn.microsoft.com/en-us/library/aa741525.aspx
может там что-то найдешь.

там я уже смотрел

Цитата

CTRL+F и ничего делать не надо  

))

У меня есть вариант поиска, но он сделан на Дэлфи, я пытался перевести но не получилось. Dmi3ev, ты можешь перевести код на builder. 

Код

procedure TForm3.Poick(f:string);
var web:IHTMLTxtRange;
    r:string;
begin
 if not WebBrowser1.Busy then  
  begin
   web:=((WebBrowser1.Document as IHTMLDocument2).Body as IHTMLBodyElement).createTextRange;   
   while web.findText(f,1,0) do  
    begin
     web.PasteHtml('<span style="color: blue; font-weight: bolder;">' +web.htmlText + '</span>');     
     web.ScrollIntoView(True);  
     e:=True;
     WebBrowser1.Stop;
    end;
  end;
end; 

PM MAIL   Вверх
Rrader
  Дата 4.2.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 13
Всего: 191



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);
}
//---------------------------------------------------------------------------


Это сообщение отредактировал(а) Rrader - 4.2.2009, 14:24


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
ROKI
Дата 4.2.2009, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 26.5.2008

Репутация: нет
Всего: нет



Rrader, При попытке скомпилировать выдает ошибку "Type name expected"

Это сообщение отредактировал(а) ROKI - 4.2.2009, 22:30
PM MAIL   Вверх
Rrader
  Дата 5.2.2009, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 13
Всего: 191



Цитата(ROKI @  5.2.2009,  04:29 Найти цитируемый пост)
Rrader, При попытке скомпилировать выдает ошибку "Type name expected"

Код для C++Builder 2009 был потому что. Для более старых версий надо заменить две строки:
Код

void SearchText(TCppWebBrowser* Browser, WideString TxtToFind, bool Highlight)

TxtToFind.w_str() заменить на:
Код

TxtToFind.c_bstr()



--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
ROKI
Дата 5.2.2009, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 26.5.2008

Репутация: нет
Всего: нет



Rrader, Спасибо, получилось !!!
PM MAIL   Вверх
NeurnUsen
Дата 13.1.2023, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.12.2022

Репутация: нет
Всего: нет



<a href=https://bestcialis20mg.com/>buy cialis canadian</a> Nausea and vomiting can be treated with ondansetron Zofran
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1551 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.