Показать сообщение отдельно
  #1  
Старый 21.01.2017, 21:39
JackRu JackRu вне форума
Прохожий
 
Регистрация: 08.07.2009
Сообщения: 46
Репутация: 10
По умолчанию SynEdit подсветка синтаксиса

Всем привет. Решил познакомиться с компонентом SynEdit и поэтому полез в демки, а именно HighlighterDemo.

В этом демо представлен компонент (TSynCustomHighlighter) с собственной подсветкой слов 'hello', 'synEdit' и 'world':


Код:
  TSynSampleSyn = class(TSynCustomHighlighter)
  private
    fRange: TRangeState;
    fTokenID: TtkTokenKind;
    fIdentFuncTable: array[0..3] of TIdentFuncTableFunc;

...

  KeyWords: array[0..3] of UnicodeString = (
    'hello', 'synedit', 'world', 'highlighter'
  );

  KeyIndices: array[0..3] of Integer = (
    0, 2, 1, 3
  );

procedure TSynSampleSyn.InitIdent;
var
  i: Integer;
begin
  for i := Low(fIdentFuncTable) to High(fIdentFuncTable) do
    if KeyIndices[i] = -1 then
      fIdentFuncTable[i] := AltFunc;

  fIdentFuncTable[0] := FuncHello;
  fIdentFuncTable[2] := FuncWorld;
  fIdentFuncTable[1] := FuncSynedit;
  fIdentFuncTable[3] := FuncHightLight;

...

function TSynSampleSyn.FuncHightLight(Index: Integer): TtkTokenKind;
begin
  if IsCurrentToken(KeyWords[Index]) then
    Result := tkKey
  else
    Result := tkIdentifier;
end;

Но вот заставить, чтобы подсвечивалось ещё и 'highlighter', никак не выходит ...
Вложения
Тип файла: zip HighlighterDemo.zip (8.1 Кбайт, 5 просмотров)
Ответить с цитированием