• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Подсветка синтаксиса

  • Автор темы ????
  • Дата начала
?

????

Нужен простенький компонент (или пример кода) для подсветки задаваемого синтаксиса в простом edit'е (можно и rich). Навароченность не приветствуется - только выделиние другим цветом определённых заданных выражений.
 
Z

zubr

????

Вот код на компонент для Edit'а:
Код:
unit EditSint;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TEditSint = class(TEdit)
private
 { Private declarations }
 FColorSint:TColor;
 FColorDefoult:TColor;
 FList:TStrings;
protected
 { Protected declarations }
 procedure Change; override;
 procedure SetList(value:TStrings);
public
 { Public declarations }
 constructor Create(AOwner: TComponent); override;
 destructor Destroy; override;
published
 { Published declarations }
 property ColorSint:TColor read FColorSint write FColorSint;//цвет подсветки
 property ColorDefoult:TColor read FColorDefoult write FColorDefoult;//цвет по умолчанию
 property List:TStrings read FList write SetList;//список выражений, которые должны подсвечиваться
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [TEditSint]);
end;

constructor TEditSint.Create(AOwner: TComponent);
begin
inherited create(AOwner);
FList:=TStringList.Create;
FColorSint:=clBlack;
FColorDefoult:=clBlack;
end;

destructor TEditSint.Destroy;
begin
inherited;
FList.Free;
end;

procedure TEditSint.Change;
var
i:Integer;
b:boolean;
begin
inherited;
If FList.Count=0 then
begin
Self.Font.Color:=FColorDefoult;
exit;
end;
b:=False;
For i:=0 to FList.Count-1 do
begin
If Self.Text=FList.Strings[i] then
begin
 b:=True;
 Self.Font.Color:=FColorSint;
 break;
end;
end;
If not b then
Self.Font.Color:=FColorDefoult;
end;

procedure TEditSint.SetList(value:TStrings);
begin
TStringList(FList).Clear;
TStringList(FList).Assign(value);
end;

end.
 
?

????

zubr
Спасибо. Хоть это в таком виде и не работает (надо выделять часть текста), но основа есть - доделаю.
 
Z

zubr

????

Должно работать, я у себя тестил, может что не так делаешь при создании компонента?

ЗЫ Делал в Delphi5
 
?

????

zubr
Должно работать
оно и работает. только не совсем как мне надо. а надо - при списке подсвечиваемых a b с должно выводить a+b+c.
З.Ы. Выход найден - нашел подходящий компонент.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!