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

Подсветить HTML теги в RichEdit

Delphi , Компоненты и Классы , TMemo и TRichEdit

Подсветить HTML теги в RichEdit


procedure HTMLSyntax(RichEdit: TRichEdit; TextCol,
  TagCol, DopCol: TColor); 
var  
  i, iDop: Integer; 
  s: string; 
  Col: TColor; 
  isTag, isDop: Boolean; 
begin 
  iDop := 0; 
  isDop := False; 
  isTag := False; 
  Col := TextCol; 
  RichEdit.SetFocus; 

  for i := 0 to Length(RichEdit.Text) do 
  begin 
    RichEdit.SelStart := i; 
    RichEdit.SelLength := 1; 
    s := RichEdit.SelText; 

    if (s = '<') or (s = '{') then isTag := True; 

    if isTag then 
      if (s = '"') then 
        if not isDop then 
        begin 
          iDop  := 1; 
          isDop := True; 
        end  
        else 
          isDop := False; 

    if isTag then 
      if isDop then 
      begin 
        if iDop <> 1 then Col := DopCol; 
      end  
      else 
        Col := TagCol 
    else 
      Col := TextCol; 

    RichEdit.SelAttributes.Color := Col; 

    iDop := 0; 

    if (s = '>') or (s = '}') then isTag := False; 
  end; 
   
  RichEdit.SelLength := 0; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  RichEdit1.Lines.BeginUpdate; 
  HTMLSyntax(RichEdit1, clBlue, clRed, clGreen); 
  RichEdit1.Lines.EndUpdate; 
end;

Перевод контента на русский язык:

В предоставленном коде используется TRichEdit для подчеркивания HTML-тегов в текстовом редакторе. Процедура HTMLSyntax перебирает каждый символ текста в rich edit control, проверяет является ли он открывающим или закрывающим тегом, и устанавливает цвет выбранного текста соответственно.

Вот некоторые предложения по улучшению:

  1. Используйте регулярное выражение: вместо проверки каждого символа индивидуально, можно использовать компонент TRegEx Delphi для поиска HTML-тегов и подчеркивания их. Это сделает ваш код более эффективным и легким в обслуживании.
  2. Обрабатывайте правильно вложенные теги: текущая реализация только проверяет является ли выбранный символ открывающим или закрывающим тегом, но не обрабатывает случаи с несколькими уровнями вложенности (например, <a><b>...</b></a>).
  3. Используйте отдельную переменную для подчеркивания: вместо изменения переменной Col внутри цикла, можно использовать отдельную переменную для хранения цвета подчеркивания. Это сделает ваш код более читаемым.
  4. Добавьте поддержку других HTML-сущностей: текущая реализация только подчеркивает символы <, >, ", {} как теги. Возможно, вам нужно добавить поддержку других HTML-сущностей, таких как & и ``.

Вот обновленная версия кода, которая использует регулярное выражение для подчеркивания HTML-тегов:

procedure HTMLSyntax(RichEdit: TRichEdit; TagCol, DopCol, TextCol: TColor);
var
  re: TRegEx;
  match: TMatch;
begin
  RichEdit.SetFocus;

  re := TRegEx.Create('\<[^>]*\>', [reMultiLine]);
  try
    for match in re.FindAll(RichEdit.Text) do
    begin
      RichEdit.SelStart := match.Start;
      RichEdit.SelLength := match.Length;
      RichEdit.SelAttributes.Color := TagCol;
    end;
  finally
    re.Free;
  end;

  RichEdit.SelLength := 0;
end;

В обновленном коде TRegEx используется для поиска всех вхождений HTML-тегов в текст. Регулярное выражение \<[^>]*\> matches любую последовательность символов, которая начинается с <, не содержит >, и заканчивается >. Метод FindAll возвращает коллекцию совпадений, которые затем подчеркиваются установкой их цвета в TagCol.

Обратите внимание: этот код предполагает, что текст в rich edit control является одиночной длинной строкой. Если вы работаете с несколькими строками текста, вам может потребоваться изменение регулярного выражения и логики подчеркивания соответственно.

ПрограммаRichEdit с помощью процедуры HTMLSyntax подсвечивает HTML-теги в тексте, выделяя теги и открывающие символы различными цветами.


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

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




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


:: Главная :: TMemo и TRichEdit ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 09:32:58/0.0060949325561523/0