Skip to main content

Защита диапазона текстового документа

Вы можете защитить от изменений диапазон текстового документа. Данные в таком диапазоне нельзя модифицировать до снятия защиты.

Используйте метод Range::lockContent() для установки защиты:


// Защита первого абзаца документа:
Range textRange = document.getRange().getBegin().getCurrentRange(TextUnit::Paragraph).get();
textRange.lockContent();

При попытке редактирования защищенного фрагмента возникает исключение DocumentModificationError:


Position pos = textRange.getContentEnd().getPreviousPosition(10);
pos.insertText("My Text"); // DocumentModificationError

Чтобы определить, защищен ли диапазон документа, используйте метод Range::isContentLocked(). Он возвращает true, если текущий диапазон защищен целиком или содержит защищенные фрагменты:


std::printf("%s", textRange.isContentLocked() ? "True" : "False"); // True
std::printf("%s", document.getRange().isContentLocked() ? "True" : "False"); // True

Для снятия защиты, вызовите метод Range::unlockContent() защищенного фрагмента или диапазона текста, который его содержит:


textRange.unlockContent();
// или
document.getRange().unlockContent();

Также вы можете снять защиту только с части диапазона:


// Снятие защиты с последнего предложения защищенного абзаца:
textRange.getContentEnd().getPreviousRange(TextUnit::Sentence).get().unlockContent();