Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Вниз

Поиск текста в WebBrowser не работает ?!   Найти похожие ветки 

 
brestmarket   (2002-11-09 15:27) [0]

Почему-то выделяется весь текст в желтый цвет, а надо, чтобы только искомый и осуществлялся переход к этому тексту.
Вот такой код у меня, что не так?:

{....}

private
procedure SearchAndHighlightText(aText: string);

{....}

procedure TForm1.SearchAndHighlightText(aText: string);
var
i: Integer;
begin
for i := 0 to WebBrowser1.OleObject.Document.All.Length - 1 do
begin
if Pos(aText, WebBrowser1.OleObject.Document.All.Item(i).InnerText) <> 0 then
begin
WebBrowser1.OleObject.Document.All.Item(i).Style.Color := "#FFFF00";
WebBrowser1.OleObject.Document.All.Item(i).ScrollIntoView(True);
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SearchAndHighlightText("some text...");
end;


 
Ihor Osov'yak   (2002-11-09 16:21) [1]

Дело в том, что теги образуют иерархическое вхождение.
Обьясняю на примере:

<body>
это обычный текст

тоже чего то

вот оно



</body>


И если Вы будете искать "вот оно" Вашим методом, то первым делом получите интерфейс на боди, так как его инертекст тоже будет содержать искомую строку. Вам нужно оспользовать рекурсивную обработку. Или проход цыкла в обратном порядке, с запоминанием всех sourceID парентов для уже отмеченого тега на предмет исключения этих парентов от "лишнего" отмечивания.



 
int64   (2002-11-09 20:04) [2]

brestmarket (09.11.02 15:27)
А какой практический смысл, при поиске выделять весь текст элемента, а не искомый субстринг?

P.S.Для поиска в теле документа, с отображением найденного юзают IHTMLTxtRange. См. MSDN: findText Method (TextRange)


 
brestmarket   (2002-11-09 22:34) [3]

Экспериментировать нет времени, int64 или еще кто-нибудь, помогите плз. Очень заранее признателен.


 
brestmarket   (2002-11-10 02:36) [4]

Очень прошу привести пример поиска в WebBrowser


 
int64   (2002-11-10 21:37) [5]

Ну, если не получается в MSDN в поле поиска ввести: "findText Method", тогда вот:

procedure TForm1.Button1Click(Sender: TObject);
var Range : IHTMLTxtRange;
i: integer;
FindText: WideString;
begin
Range := HTMLBody(HTMLDocument(WebBrowser1.Document).Body).createTextRange;
i:=0;
FindText:="s";
while (Range.findText(FindText,i,0)=true) do
begin
Range.select;
Range.collapse(false);
Application.ProcessMessages;
sleep(1000);
inc(i);
end;
end;


прыгаем по субстрингам документа.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
14-25040
OlDemon
2002-12-20 07:12
2003.01.09
Сайт по VBA


1-24832
smok_er
2002-12-27 10:53
2003.01.09
Типизированный файл - замена БД


6-24991
Борис
2002-11-11 13:59
2003.01.09
Помогите передать несколько структур по сети череp Сокеты


3-24785
Карелин Артем
2002-12-16 14:23
2003.01.09
Работа с большой базой.


1-24945
bkv
2002-12-26 16:12
2003.01.09
Как программно зарегистрировать билиотеку типов?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский