среда, 25 февраля 2015 г.

Урок 4. Ещё несколько полезных атрибутов.

Ранее мы уже использовали такие атрибуты для элементов интерфейса, как id, idMso и label. Всё это были статические атрибуты, то есть атрибуты, значения которым мы присваиваем сразу, а не получаем их в процессе работы офисного приложения, как это было бы в случае использования динамических атрибутов, о которых мы поговорим позже. Давайте рассмотрим другие полезные статические атрибуты, которые мы можем использовать для должного оформления интерфейса.

Давайте переместим нашу вкладку с конца ленты в её начало, поставив её перед самой первой вкладкой «Главная». Для этого вставим в элемент новый атрибут insertBeforeMso (вставить перед…) и присвоим ему идентификатор вкладки «Главная».

Как узнать идентификатор вкладки «Главная»? Обычно для определения идентификаторов различных элементов в офисном приложении открывают настройки ленты, наводят курсор на нужный элемент в списке, и читают всплывающую подсказку. Но вот на именах вкладках и групп подсказок почему-то нет. Как же быть? Элементарно! Открываем встроенную справку программы Ribbon XML Editor, и на её главной странице в списке приложений к справке находим пункт «Word — идентификаторы всех вкладок и групп». Открываем и вуаля! Замечу, что более полного списка идентификаторов вкладок и групп я не встречал больше нигде.

Установим курсор в любое свободное место внутри тега tab в области атрибутов, чтобы слева и справа были пробелы. Нажмём Ctrl+Пробел и выберем в списке атрибут insertBeforeMso. Выбранный атрибут вставится в текст. Затем наберём знак «=». Вы увидите, как тут же после знака автоматически добавятся кавычки, и курсор установится внутри них. Снова нажмём Ctrl+Пробел и выберем из предлагаемых идентификаторов вкладок найденный в справке идентификатор TabHome, который соответствует вкладке «Главная».

Можно и не нажимать Ctrl+Пробел, а просто начать набирать первые буквы идентификатора в любом регистре. Окно автодополнения со списком идентификаторов вкладок покажется после набора первых двух букв. Продолжение набора будет уточнять список, пока не останется только один вариант. На любом этапе вы можете сделать окончательный выбор из списка, или не использовать его вовсе.

Замечу, что количество набранных букв до показа списка автодополнения можно регулировать в настройках программы. На первой вкладке настроек в разделе «Автодополнение» находится три маленькие странички настроек. Первая — это общие настройки для всех списков, а следующие две относятся к длинным и коротким спискам. Короткие списки — это списки тегов, атрибутов или их значений, если эти значения — не идентификаторы. Такие списки удобно видеть целиком, без сокращения по мере набора. Длинные списки — это списки идентификаторов, которые обычно очень большие, и их полезно сокращать, принимая во внимание уже набранную часть идентификатора.

Проверим, что у нас получилось. Запустив документ на выполнение, мы увидим, что наша вкладка переместилась в самое начало, и расположилась перед вкладкой «Главная». Аналогично работает атрибут insertAfterMso, позволяя расположить наш элемент после существующего.

Мы можем автоматически скрывать все стандартные вкладки ленты при загрузке документа, и оставлять только созданные нами. Для этого достаточно в элементе ribbon изменить значение атрибута startFromScratch (начать с чистого листа) с false на true. Не знаю, имеет ли это большой смысл, но просто запомним, что такая возможность есть.

Кроме того, можно скрывать каждую вкладку и по-отдельности, используя атрибут visible:

    <tab idMso="TabHome" visible="false"/>
    <tab idMso="TabInsert" visible="false"/>
    <tab idMso="TabPageLayoutWord" visible="false"/>
    <tab idMso="TabReferences" visible="false"/>
    <tab idMso="TabMailings" visible="false"/>

Здесь мы с помощью атрибута idMso ссылаемся на стандартные вкладки и присваиваем атрибуту visible (видимость) значение false.

На этом сегодняшний урок мы закончим. В следующий раз мы попробуем поработать с изображениями.

4 комментария:

  1. Уточните, где нужно писать код, скрывающий каждую вкладку и по-отдельности? Проверка синтаксиса ругается…

    ОтветитьУдалить
    Ответы
    1. Всегда читайте, на что именно ругается. У меня в примере были ошибки, и чтение результата проверки синтаксиса однозначно выявило их. Теги tab не были закрыты, и вместо idMso было написано idmso. Ума не приложу, откуда эти ошибки у меня появились... Этот код пишется, конечно, внутри теге tabs.

      Удалить
    2. Спасибо.

      Удалить
  2. Скрыть вкладки удалось успешно, только заменил идентификаторы ворда на екселевские. А вот расположение вкладки не меняется ни под каким предлогом, ошибок при этом нет.

    ОтветитьУдалить