Недавно ученые создали холодильник с возможностью доступа в Интернет для заказа продуктов, но проклятая железяка лазает исключительно по порносайтам и заказывает только огурцы и бананы.
{....}privateprocedure SearchAndHighlightText(aText: string);
{....}procedure TForm1.SearchAndHighlightText(aText: string);
var
i: Integer;
beginfor i := 0 to WebBrowser1.OleObject.Document.All.Length - 1 dobeginif Pos(aText, WebBrowser1.OleObject.Document.All.Item(i).InnerText) <> 0 thenbegin
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;
Код, который вы предоставили, это приложение Delphi, использующее компонент TWebBrowser для взаимодействия с веб-страницей и выделения конкретного текста на ней.
Вот как работает код:
Процедура SearchAndHighlightText принимает строку в виде параметра aText.
Она проходит по всем элементам на странице, используя свойство All объекта Document.
Для каждого элемента она проверяет, содержит ли свойство InnerText указанный текст с помощью функции Pos.
Если текст найден, она изменяет цвет элемента на желтый ('#FFFF00') и прокручивает элемент в вид.
Событийный обработчик кнопки Button1Click вызывает процедуру SearchAndHighlightText с строкой 'some text...'.
Чтобы выделить конкретный текст в веб-браузере, вы можете просто вызвать процедуру SearchAndHighlightText с желаемым текстом как аргументом. Например:
procedureTForm1.Button2Click(Sender:TObject);beginSearchAndHighlightText('огурцы');// выделит 'огурцы' (огурцы) в жёлтый цветend;
Обратите внимание, что код только ищет точные совпадения указанного текста и не поддерживает регулярные выражения или фuzzi matching. Кроме того, он может не работать правильно, если веб-страница использует JavaScript для динамического обновления своего содержимого.
Вот улучшенная версия процедуры SearchAndHighlightText, которая поддерживает поиск с учетом регистра и может обрабатывать несколько вхождений искомого текста:
procedureTForm1.SearchAndHighlightText(aText:string);vari:Integer;found:Boolean;beginfound:=False;fori:=0toWebBrowser1.OleObject.Document.All.Length-1dobeginifPos(UPPERCASE(aText),UPPERCASE(WebBrowser1.OleObject.Document.All.Item(i).InnerText))>0thenbeginWebBrowser1.OleObject.Document.All.Item(i).Style.Color:='#FFFF00';found:=True;end;end;ifnotfoundthenShowMessage('Текст не найден');end;
В этой улучшенной версии мы используем функцию UPPERCASE для преобразования искомого текста и внутреннего текста каждого элемента в верхний регистр перед сравнением. Это позволяет выполнять поиск с учетом регистра. Мы также добавили переменную found, чтобы отслеживать, были ли найдены какие-либо совпадения, и отображать сообщение, если не было найдено ни одного совпадения.
В статье описывается создание программы, которая может найти и подсветить текст в web-браузере, используя пример кода на языке Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.