Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > браузер


Автор: storyteller 24.4.2013, 19:30
Ребят,такой вопрос,не подскажите,каким образом можно реализовать поиск в браузере,созданном на c++ builder,причем имею ввиду поиск по ключевым словам(грубо говоря,как ctrl+f) и чтобы искомое слово выделялось каким-либо цветом.

Автор: xvr 25.4.2013, 11:19
'браузере,созданный на c++ builder' - это всего лишь обвертка над OLE объектом IE. Его интерфейс - http://msdn.microsoft.com/en-us/library/aa752127%28v=VS.85%29.aspx. Вот в нем и ищите
(Вам нужен IWebBrowser2::get_Document и далее)


Автор: Riviero 26.4.2013, 10:05
Сталкивался в этой задачей, но так и не решил. Делал через Ole.

А если делать так: WebBrowser->Document - то дальше непонятно куда идти, у этого Documenta нет методов, которые можно было бы хоть как-то использовать. 

При попытке написать так

Код

    OleVariant Doc = Wb->OleObject.OlePropertyGet("Document");


Выдает access vialation...

Засада какая-то.

Автор: xvr 26.4.2013, 10:57
Цитата(Riviero @  26.4.2013,  10:05 Найти цитируемый пост)
А если делать так: WebBrowser->Document - то дальше непонятно куда идти, у этого Documenta нет методов, которые можно было бы хоть как-то использовать. 

Через него можно достать DOM дерево загруженного документа. И по нему уже искать нужный текст (но самому, руками). Подстветить, что нашлось, тоже можно через DOM (через стили найденного элемента)

Автор: Riviero 26.4.2013, 16:05
Цитата(xvr @  26.4.2013,  10:57 Найти цитируемый пост)
Через него можно достать DOM дерево загруженного документа. И по нему уже искать нужный текст (но самому, руками). Подстветить, что нашлось, тоже можно через DOM (через стили найденного элемента)


Это получатся перебор всех элементов? Если страница большая - будет очень долго выполняться.

Автор: xvr 26.4.2013, 22:05
Цитата(Riviero @  26.4.2013,  16:05 Найти цитируемый пост)
Это получатся перебор всех элементов?

Да. 
Цитата(Riviero @  26.4.2013,  16:05 Найти цитируемый пост)
 Если страница большая - будет очень долго выполняться. 

Будет, увы  smile 

Автор: Avazart 28.4.2013, 02:09
А использовать TIdHTTP  и  разбирать вручную ?

Автор: Riviero 30.4.2013, 09:55
Цитата(Avazart @  28.4.2013,  02:09 Найти цитируемый пост)
А использовать TIdHTTP  и  разбирать вручную ? 

Что-то я не догнал как этот TIdHTTP работает.Он же вроде как для общения с сервером...

Автор: xvr 30.4.2013, 11:49
Цитата(Riviero @  30.4.2013,  09:55 Найти цитируемый пост)
Что-то я не догнал как этот TIdHTTP работает.


Avazart имеет в виду загрузить HTML страницу с сервера напрямую (без участия 'браузера,созданного на c++ builder') и искать в ней руками.

В принципе для простых страниц может сработать, но даже для простых страниц будет боооольшая проблема с 'чтобы искомое слово выделялось каким-либо цветом.'  smile 

Автор: Avazart 1.5.2013, 03:52
Все зависит от конечной цели...
Только совпадения ? Или еще и подсветку с html- форматированием.

Если форматирование не нужно то страницу, можно грузить просто RichEdit там искать и подсвечивать.


Автор: Riviero 6.5.2013, 09:20
У меня страница генерируется в проге (просто надо было сделать интерфейс такой же, как и был) и прикрутить бд. Поэтому с сервера загрузить не удасться. 
А поиск нужен по вхождениям, без подсветки, как при диалоге поиска с кнопочками "предыдущее", "следующее".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)