1

Тема: Как защитить стили от изменения, не теряя ручного форматирования?

1. Защита форматирования документа разрушает форматирование. Именно так и происходит, если ее установить. Появляется окно с запросом об удалении из документа запрещенных стилей и удаляется все ручное форматирование.

2. Мало того, становится недоступной кнопка выбора стиля многоуровневого нумерованного списка и задание его уровня. А у меня их четыре разных!

Да, я конечно могу сделать стили уровней списка, 9 уровней х 4 списка = 36 стилей(!) дополнительно и пользоваться ими. Но зачем? Зачем включать это в стили, если есть одна кнопка, которая это все устанавливает?

3. У меня есть стиль таблицы, в котором задано выравнивание абзаца влево. Я менял выравнивание тремя кнопками в группе "Абзац". Теперь они, как и все остальные -- недоступны.

Да, я конечно могу наделать еще штук 20 стилей для абзацев с разным форматированием, отличающихся от исходных только выравниванием. Но зачем плодить сущности? Ведь это костыль -- есть же 3 замечательные кнопки?

Вот и получается, что для удобной работы нужны и стили и доступ к группам "Шрифт" и "Абзац" на ленте.
Пока это у меня есть, я обхожусь всего 33-я стилями и этими двумя группами.

Но как защитить стили от изменений, не потеряв этих удобств?
Не форматирование в целом (для которого необходимо создать в 3, а то и 4 раза больше стилей, чем реально нужно), а именно защитить сами стили?

Отредактировано rizalut (29.06.2010 22:21:14)

2

Re: Как защитить стили от изменения, не теряя ручного форматирования?

Зачем 36 стилей?? В многоуровневом списке настраиваете уровни. Выбираете стиль первого уровня, ставите курсор в начала абзаца и нажимаете кнопку tab до нужно уровня. получается, что по одному стилю на один многоуровневый список. для абзаца еще плюс 3 стиля. Совсем немного.. Есть еще прекрасные сочетания клавиш, которые ответственны за выравнивание в абзаце - запомнить их не составит труда. Просто вы так привыкли и не хотите попробовать что-то новое. Справку по сочетаниям клавиш можно найти в справке, если так и набрать в поиске "Сочетания клавиш" - увидите очень много интересных сочетаний! В том числе и для работы со списками!
А вот защита - уже другое дело. По защите, я думаю, вам даст совет Александр.

Отредактировано andrkar (29.06.2010 17:11:52)

3

Re: Как защитить стили от изменения, не теряя ручного форматирования?

andrkar

Простите, я видимо неясно выразился. Проблема не в том, что я каких-то шорт-катов не знаю, проблема в том, что отключаются целые группы на вкладках ленты, которые предназначены для ручного форматирования. Оно, которое форматирование, подменять нарочитыми стилями -- мазохизм и извращение.

>для абзаца еще плюс 3 стиля
Вот в этом и мазохизм. Не всего три, а для каждого стиля абзаца еще 2 стиля, т.е. общее количество стилей вырастает в 3 раза. Например -- было  9 абзацных стилей стандартных заголовков + 4 стиля в таблицах -- стало 39!

А зачем их столько? Вполне достаточно столько, сколько было + 3 кнопки выравнивания.

4

Re: Как защитить стили от изменения, не теряя ручного форматирования?

rizalut пишет:

Вот и получается, что для удобной работы нужны и стили и доступ к группам "Шрифт" и "Абзац" на ленте.

Как говорится: "Вам шашечки или ехать?" Какая стоит задача: ограничить форматирование, чтобы вручную пользователь ничего не наковырял? Тогда нужно делать стили. Столько, сколько необходимо.
Более того, подготовка шаблона с ограниченными стилями совсем не ограничивается (пардон за каламбур) определением этих стилей. Нужно ещё предусмотреть интерфейс, который бы делал работу с шаблоном удобной. Сюда входит создание кнопок, панелей инструментов, меню (Word 2003), вкладок с элементами управления (2007, 2010), может быть написание макросов.
По поводу стилей списков. Их можно применить в защищённом документе: нажмите кнопку, разворачивающую галерею экспресс-стилей, и выберите пункт "Применить стили…". Появится список со всеми стилями, разрешёнными для применения.
То, что кнопки списков становятся неактивными, совершенно логично: ведь ручное форматирование запрещено, а доступ к этим кнопкам, как раз и предоставляет возможность ручного форматирования. А вот невозможность отображения стилей списков в экспресс-стилях, я считаю недочётом. Но его можно обойти, как я уже сказал. Вопросы приветствуются

Лучше день потерять — потом за пять минут долететь!

5

Re: Как защитить стили от изменения, не теряя ручного форматирования?

Что касается стилей, то мне на работе, для оформления хватает следующих стилей
1. Абзац - для оформления абзацев
2. Заголовок 1-5 - для оформления заголовков
3. Пункт 2-5 - для оформления пунктов
4. Маркированный список многоуровневый с разными маркерами
5. Список с буквами
6. Список с цифрами - многоуровневый (независимый от стилей заголовков)
7. Название рисунка
8. Название таблицы
9. Заголовок таблицы
10. Табличный слева
11. Табличный центр
12. Примечание
13. Командная строка
14. Приложение, заголовки 2-5 приложений
Все, часто используемые стили выведены на отдельную панель инструментов, которой как раз в одну строку хватает по всех ширине поля панелей инструментов - в 2007 данная панель без проблем перекочевала из 2003, но можно создать и свою, если немного потрудиться..

У меня стили незащищены, ручное форматирование можно вносить. И уже не одна тысяча документов за 15 лет сделана.

Опять же, весь текст в этих документах оформлен именно стилями. Преимущество очевидно - когда для очередного заказчика нужно что-то поменять в оформлении, меняется только стиль, весь документ меняется по стилям автоматически, ручное форматирование, бывшее до этого в тексте и отличное от стиля абзаца, в котором находится данный текст, все равно остается. Так что вообще не вижу проблем.
Александр прав - задавайте вопросы - вместе придем к какому-то решению, которое сможет,вполне возможно,  вас устроить!

Отредактировано andrkar (29.06.2010 21:30:31)

6

Re: Как защитить стили от изменения, не теряя ручного форматирования?

andrkar, решение защиты стилей без ограничения возможностей ручного форматирования найдено:

1. Файл шаблона защищаем от изменения установкой соответствующего атрибута "Read Only".
2. После создания документа двойным кликом по файлу шаблона, устанавливаем "Автоматически обновлять стили" в окне, открываемом кнопкой "Шаблон документа" в группе "Шаблоны" вкладки "Разработчик".

В результате, любое (злонамеренное или случайное) изменение стилей в документе:
1. не сохраняется в его шаблоне;
2. отменяется в стилях документа при повторном его открытии, соответственно -- и его тексте;
3. Ручное форматирование не уничтожается и доступ к нему не запрещается.

viter.alex
> Вам шашечки или ехать?
Мне ехать по кратчайшему маршруту. А это вовсе не то, что предлагают разработчики Ворда в своей реализациии механизма защиты форматирования, уничтожающим любое ручное форматирование, не заданное разрешенными стилями.
Найденный мною вариант вполне обеспечивает нужную функциональность.

> нажмите кнопку, разворачивающую галерею экспресс-стилей, и выберите пункт "Применить стили…".
Увы, не нашел таковую в ленте Ворд 2007.

Отредактировано rizalut (29.06.2010 22:26:12)

7

Re: Как защитить стили от изменения, не теряя ручного форматирования?

Пункт "Применить стили... " можно найти, если нажать на элемент "треугольник с чертой", что находится под полосой прокрутки галереи экспресс-стилей.

8

Re: Как защитить стили от изменения, не теряя ручного форматирования?

Ручное форматирование в защищенном от форматирования документе работает и легко реализуется с помощью макросов. Например, навскидку:

Sub ToggleStyle(control As IRibbonControl)
    Select Case control.Tag
        Case Is = "Bold"
            Selection.Font.Bold = wdToggle
        Case Is = "Italic"
            Selection.Font.Italic = wdToggle
        Case Is = "Underline"
            Selection.Font.Underline = wdToggle
        Case Is = "Superscript"
            Selection.Font.Superscript = wdToggle
        Case Is = "Subscript"
            Selection.Font.Subscript = wdToggle
    End Select
End Sub

Теперь на ленте достаточно создать кнопочки с соответствующими рисунками, и в свойстве Tag записать соответствующее значение. (Код можно оптимизировать, а кнопкам назначить горячие клавиши).
К стати, макросы позволяют обходить многие другие функции отключаемые защитой. Пробуйте!