Защитите диапазон текста в ScintillaNet: какой из них лучший способ сделать это? - PullRequest
0 голосов
/ 27 декабря 2018

Я знаю, что у стилей есть атрибут, позволяющий / не допускающий изменений в тексте, к которому они применяются:

SCI_STYLESETCHANGEABLE (int style, bool changeable)

Однако в документации сказано: « Это экспериментальный и не полностью реализованный атрибут стиля. », который, кажется, не «готов к производству»

Я думаю, что есть другая альтернатива, использующая «Индикаторы».":

Индикаторы

Чтобы защитить диапазон текста, мы могли бы применить к нему определенный индикатор и в событии нажатия клавиши обнаружить" del "&" backspace ".Если символ, который следует за текущей позицией (позицией каретки) в случае «del» или предшествует текущей позиции в случае «возврата», имеет этот индикатор, то мы должны отменить событие и не удалять текст.

Какиеиз этих 2 альтернатив лучше?Есть еще лучший способ?

Примечание: ScintillaNet основан на Scintilla, и я предполагаю, что обширная документация последнего действительна для обоих.

1 Ответ

0 голосов
/ 14 января 2019

Я поделюсь с вами одним из ответов в "Google Scintilla-Interest", которые опубликовали Нил Ходжсон , создатель Scintilla.

[Ян Г.]> SCI_STYLESETCHANGEABLE - это то, что я пробовал изначально, прежде чем прибегнуть к написанию этого патча.Единственный реальный недостаток, который я вижу, состоит в том, что в таких случаях, как мой, он удваивает количество необходимых стилей, потому что каждый визуальный стиль, который может встречаться в области записи, может также встречаться в защищенной области, но я мог бы с этим смириться.

[Нейл Ходжсон] Было бы лучше использовать индикатор для охраняемых районов, поскольку они относительно компактны и избегают удвоения количества стилей.

завершить публикацию в Scintilla-интереса

...