![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Всем привет. Решил познакомиться с компонентом 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', никак не выходит ... |
|
#2
|
||||
|
||||
|
"Руками" если заносить в массив слова на подсветку да в пасовское тело и не получится, основа всей системы Syn - это скриптование, отсюда сначало нужно вписать новые кейворды в файл с расширением *.msg в секцию KEYS (или в свою, с другими параметрами "подсветки"), а затем специальной утилитой SynGen.exe (есть в поставке исходниками) сгенерить для этих слов свой хеш (подсветка не считыванием слов из текста организована, а видимо сверкой контрольных сумм для них), в пример *.pas изменения пропишутся автоматом - не пользовал никогда подсветку раньше, но вот попробовал сейчас: оно так работает
|