|
<< Нажмите, чтобы показать Содержание >> Фоновая проверка орфографии в ТРВ-Редакторе (TRichView) |
Фоновая проверка орфографии помечает ошибочные (не найденные в словарях) слова:
▪[VCL и Lazarus] волнистыми линиями цвета TRVStyle.LiveSpellingColor
▪[FMX] пунктирными линиями цвета TRVStyle.LiveSpellingColor.
Фоновая проверка орфографии происходит в потоке (thread).
В TRichView:
Проверка запускается методом StartLiveSpelling.
Проверка запускается:
▪методом StartLiveSpelling, или
▪когда пользователь редактирует документ, или вызывается метод редактирования документа (если LiveSpellingMode=rvlspOnChange)
Проверка останавливается методом ClearLiveSpellingResults. Clear также завершает проверку.
Рекомендуемый компонент для проверки орфографии – TRVSpellChecker.
Кроме того, поддерживаются следующие компоненты, основанные на библиотеках других разработчиков:
1.Addict 3 и 4 от Addictive Software (платный компонент Delphi, разработка прекращена)
2.ExpressSpellChecker от Developer Express Inc. (платный компонент Delphi)
3.HunSpell (бесплатная библиотека со свободным кодом, тройная лицензия GPL/LGPL/MPL)
4.ASpell от Kevin Atkinson (бесплатная библиотека со свободным кодом, лицензия LGPL)
5.Polar SpellChecker от Polar (платный ActiveX)
Фоновый поток проверки орфографии вызывает событие OnSpellingCheck для проверки каждого слова в документе.
«Слово» определяется как последовательность символов между разделителями (Delimiters). Кроме того, символ '&' рассматривается как разделитель. Апострофы обрабатываются особым образом, см. глобальную переменную RichViewApostropheInWord.
Адреса URL пропускаются при проверке, см. функцию RVIsCustomURL.
В FireMonkey компонент TRichViewEdit может использовать службу проверки орфографии (IFMXSpellCheckerService), предоставляемую некоторыми платформами (например, macOS).
Чтобы включить использование платформенной службы, присвойте свойству CheckSpelling = True.
В этом случае нет необходимости обрабатывать событие OnSpellingCheck, слова проверяются с помощью платформенной службы. Однако, если событие назначено, оно используется вместо службы.
Вызовите LiveSpellingValidateWord, если пользователь добавил слово в словарь или список пропускаемых слов.
Вызовите GetCurrentMisspelling чтобы получить или исправить выделенное слово. Например, контекстное меню можно реализовать так:
1.перед показом меню, используйте GetCurrentMisspelling, чтобы получить текущее ошибочное слово и добавить список возможных исправлений в меню;
2.когда пользователь выбрал исправление, используйте GetCurrentMisspelling снова, чтобы выделить ошибочное слово, и InsertText чтобы вставить исправление вместо него.
В качестве альтернативы ошибочное слово может быть выделено на шаге 1 (перед показом меню).
В версиях ТРВ-Редактора для VCL и Lazarus отсутствуют специальные методы для добавления пунктов исправления орфографических ошибок в выпадающее меню. Однако они реализованы в Инструментах интерфейса ТРВ (RichViewActions) в компоненте TRVAPopupMenu, а также в компонентах для интеграции ТРВ-Редактора в VCL-компоненты от Developer Express.
В FireMonkey, если свойство PopupMenu не задано, TRichViewEdit отображает специальное всплывающее меню по умолчанию. Пункты исправления орфографических ошибок добавляются в это меню автоматически. Если вы используете сторонний компонент проверки орфографии вместо платформенного сервиса, для добавления этих пунктов используется событие OnGetSpellingSuggestions. Обратите внимание, что добавляются только пункты с подсказками (пункты «Пропустить», «Пропустить все», «Добавить в словарь» не создаются автоматически).
При вызове любого метода редактирования документа вам не нужно беспокоиться о фоновой проверке орфографии, всё обрабатывается автоматически (метод приостанавливает поток проверки орфографии, вносит изменения, а затем возобновляет поток с нужного места).
Однако при вызове любого метода быстрого изменения документа, вы должны быть уверены, что фоновая проверка отключена. Если вы вызываете Clear, а затем создаёте новый документ, всё в порядке, потому что Clear отключает фоновую проверку орфографии. Но если вы вносите изменения в существующий документ, вызовите ClearLiveSpellingResults перед внесением этих изменений.
Фоновая проверка требует 8 дополнительных байт на каждый элемент документа. Если она вам не нужна, вы можете скомпилировать своё приложение с директивой компилятора RVDONOTUSELIVESPELL (см. файл RV_Defs.inc)