Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Найти и подсветить текст в WEBBrowser

Delphi , Интернет и Сети , Браузер

Найти и подсветить текст в WEBBrowser

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


{....} 

  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;

Код, который вы предоставили, это приложение Delphi, использующее компонент TWebBrowser для взаимодействия с веб-страницей и выделения конкретного текста на ней.

Вот как работает код:

  1. Процедура SearchAndHighlightText принимает строку в виде параметра aText.
  2. Она проходит по всем элементам на странице, используя свойство All объекта Document.
  3. Для каждого элемента она проверяет, содержит ли свойство InnerText указанный текст с помощью функции Pos.
  4. Если текст найден, она изменяет цвет элемента на желтый ('#FFFF00') и прокручивает элемент в вид.

Событийный обработчик кнопки Button1Click вызывает процедуру SearchAndHighlightText с строкой 'some text...'.

Чтобы выделить конкретный текст в веб-браузере, вы можете просто вызвать процедуру SearchAndHighlightText с желаемым текстом как аргументом. Например:

procedure TForm1.Button2Click(Sender: TObject);
begin
  SearchAndHighlightText('огурцы'); // выделит 'огурцы' (огурцы) в жёлтый цвет
end;

Обратите внимание, что код только ищет точные совпадения указанного текста и не поддерживает регулярные выражения или фuzzi matching. Кроме того, он может не работать правильно, если веб-страница использует JavaScript для динамического обновления своего содержимого.

Вот улучшенная версия процедуры SearchAndHighlightText, которая поддерживает поиск с учетом регистра и может обрабатывать несколько вхождений искомого текста:

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

  if not found then
    ShowMessage('Текст не найден');
end;

В этой улучшенной версии мы используем функцию UPPERCASE для преобразования искомого текста и внутреннего текста каждого элемента в верхний регистр перед сравнением. Это позволяет выполнять поиск с учетом регистра. Мы также добавили переменную found, чтобы отслеживать, были ли найдены какие-либо совпадения, и отображать сообщение, если не было найдено ни одного совпадения.

В статье описывается создание программы, которая может найти и подсветить текст в web-браузере, используя пример кода на языке Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:34:03/0.005669116973877/1