Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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 просмотров)
Ответить с цитированием
  #2  
Старый 27.01.2017, 02:27
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

"Руками" если заносить в массив слова на подсветку да в пасовское тело и не получится, основа всей системы Syn - это скриптование, отсюда сначало нужно вписать новые кейворды в файл с расширением *.msg в секцию KEYS (или в свою, с другими параметрами "подсветки"), а затем специальной утилитой SynGen.exe (есть в поставке исходниками) сгенерить для этих слов свой хеш (подсветка не считыванием слов из текста организована, а видимо сверкой контрольных сумм для них), в пример *.pas изменения пропишутся автоматом - не пользовал никогда подсветку раньше, но вот попробовал сейчас: оно так работает
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:31.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter