Этюды для программистов Microsoft Word

Home ] Up ] Этюд 1.1. Подгонка размера текста ] Этюд 1.2. Изменение регистра символов ] Этюд 1.3. Поиск и раскраска гиперссылок ] Этюд 1.4. Стили ] Этюд 1.5. Вставка форматированного текста ] Этюд 1.6. Вычисление высоты текста. ] Этюд 1.7. Форматирование заголовка. ]


Этюд 1.2. Изменение регистра символов

The term case comes from the printing trade when the use of moving type was invented in the early Middle Ages (Caxton or Gutenberg?) and the letters for each font were stored in a box with two sections (or "cases"), the upper case was for the capital letters and the lower case was for the small letters. The Oxford Universal Dictionary of Historical Principles (Feb 1993, reprinted 1952) indicates that this usage of "case" (as the box or frame used by a compositor in the printing trade) was first used in 1588.

http://www.websters-online-dictionary.org/definition/Case

 

Некоторые операции требуют нескольких действий для своего выполнения. Например, для изменения регистра символов нужно выполнить следующую последовательность команд:

1. выбрать пункт меню "Format\Change Case..." или нажать соответствующую кнопку на панели инструментов
2. в диалоге "Change Case" выбрать нужную операцию
3. нажать OK

 

Если операцию приходится выполнять часто, то она является подходящим кандидатом для создания макроса и помещения соответствующей кнопки на панель инструментов. Пусть вместо нас работает компьютер!

Английские название регистров объясняются тем, что когда-то английские наборщики использовали две наборные кассы – верхнюю (Upper case) и нижнюю (Lower case). Прописные литеры располагались в верхней кассе, а строчные в нижней.

Ресурсы

Шаблон "AhTextCase.dot", 18 Кб, формат ZIP [скачать].

Функциональная спецификация

Задача

Необходимо создать шаблон "AhTextCase.dot", в котором будут размещены макросы изменения регистра символов и панель инструментов "AhTextCase", предоставляющая быстрый и удобный доступ ко всем макросам изменения регистра символов.

Панель инструментов "AhTextCase"

Панель инструментов "AhTextCase" имеет следующий вид.

Панель инструментов "AhTextCase" предоставляет доступ к следующим функциям.

Кнопка панели

Макрос

Краткое описание

Help

AhTextCaseAbout

Краткая подсказка по кнопкам панели инструментов.

Upper

AhTextCaseUpper

Перевод выделенного текста в верхний регистр.

Lower

AhTextCaseLower

Перевод выделенного текста в нижний регистр.

Toggle

AhTextCaseToggle

Изменение регистра с нижнего на верхний и наоборот для выделенного текста.

Sentence

AhTextCaseSentence

Перевод первого символа выделенного текста в верхний регистр, а остальных символов в нижний регистр.

Title

AhTextCaseTitle

Перевод первого символа каждого слова выделенного текста в верхний регистр, а остальных символов в нижний регистр.

Краткая подсказка

Краткая подсказка по кнопкам панели инструментов имеет следующий вид.

Краткая подсказка для панели инструментов AhTextCase

Спецификация получилась совсем короткой. Это не страшно. Главное, чтобы всё было понятно и не предвиделось никаких проблем с реализацией.

Реализация - шаблон "AhTextCase.dot"

В шаблоне "AhTextCase.dot" реализованы простые операции для работы с регистром символов. Панель инструментов "AhTextCase" предоставляет простой интерфейс к основным операциям изменения регистра символов - перевод текста в верхний или нижний регистр, изменение регистра текста, а также установка регистра символов "Предложение" и "Заголовок".

Основной функцией, изменяющей регистр символов, является функция AhTextCaseChange. Процедуры AhTextCaseUpper, AhTextCaseLower, AhTextCaseToggle, AhTextCaseSentence и AhTextCaseTitle просто вызывают функцию AhTextCaseChange, предоставляя необходимые аргументы.

Весь код расположен в модуле "AhTextCase".

'
' File AhTextCase.dot|AhTextCase
'
' Etudes for Microsoft Word Programmers.
' Etude 1.2. Symbol Case.
' First published on http://www.transcriber.ru
'
' © 2000-200
8. Evgeny Akhundzhanov. All rights reserved worldwide.
'
Option Explicit

Процедура AhTextCaseHelp

Sub AhTextCaseHelp()
MsgBox "Etudes for Microsoft Word Programmers." & vbCrLf & _
   
"Etude 1.2. Symbol Case." & vbCrLf & _
   
"http://www.transcriber.ru" & vbCrLf & vbCrLf & _
   
"Template 'AhTextCase.dot' - " & _
   
"Changing text case." & vbCrLf & vbCrLf & _
   
"Upper - upper case" & vbCrLf & _
   
"Lower - lower case" & vbCrLf & _
   
"Toggle - toggle case" & vbCrLf & _
   
"Sentence - sentence case" & vbCrLf & _
   
"Title - title case" & vbCrLf & _
   
vbCrLf & "All commands change selection."
End Sub

Процедура AhTextCaseChange

'
' AhTextCaseChange
'
Private Sub AhTextCaseChange(ByVal dwCharCase As Long)
If Documents.Count = 0 Then Exit Sub
    On Error Resume Next
    Selection.Range.Case = dwCharCase
End Sub

Процедура AhTextCaseUpper

'
' AhTextCaseUpper
'
Sub AhTextCaseUpper()
    AhTextCaseChange wdUpperCase
End Sub

Процедура AhTextCaseLower

'
' AhTextCaseLower
'
Sub AhTextCaseLower()
    AhTextCaseChange wdLowerCase
End Sub

Процедура AhTextCaseToggle

'
' AhTextCaseToggle
'
Sub AhTextCaseToggle()
    AhTextCaseChange wdToggleCase
End Sub

Процедура AhTextCaseSentence

'
' AhTextCaseSentence
'
Sub AhTextCaseSentence()
    AhTextCaseChange wdTitleSentence
End Sub

Процедура AhTextCaseTitle

'
' AhTextCaseTitle
'
Sub AhTextCaseTitle()
    AhTextCaseChange wdTitleWord
End Sub

Выводы

В этом этюде на основе спецификации создан шаблон "AhTextCase.dot", модуль "AhTextCase" которого содержит простые макросы для работы с регистром символов. Созданная панель инструментов "AhTextCase", предоставляет удобный и быстрый интерфейс к основным операциям изменения регистра символов.

Этот этюд получился совсем коротким. Короче не бывает. Зато мы, во-первых, уже знаем что такое функциональная спецификация. А, во-вторых, мы заменили четыре довольно сложных операции на однократное нажатие кнопки. В самом деле, чтобы изменить регистр выделенных символов, сначала нужно открыть меню "Format", затем найти в нём команду "Change Case" и щелкнуть на ней левой кнопкой мыши. Если команда редко используется, то она может быть спрятана и потребуется полное раскрытие меню. В появившемся диалоге "Change Case" нужно выбрать требуемый тип регистра символов, щелкнув на нём мышкой, и, наконец, нажать кнопку "OK". Теперь всё это делается одним щелчком мыши. Это и есть "мощь компьютера на кончиках пальцев".

Интересно, что изначально намерения были благие и заключались в том, чтобы спрятать от пользователя команды, которыми он редко пользуется. То, что получилось в результате, ужасно. Привычные команды не находятся на привычных местах и их нужно искать.  Сегодня они здесь, а завтра там. На рабочем компьютере они в одном месте, у коллеги - в другом, а на домашнем - в третьем. Люди, профессионально работающие с текстами, устают от "смотрения на экран" в поиске того, что должно быть "вот здесь". Это всё равно, что искать собственные вещи в собственном доме. В идеале они должны лежать "на месте". Пусть бы уж лучше были видны неиспользуемые команды,  зато используемые были бы всегда на одном и том же привычном месте.

Чтобы отключить такое интеллектуальное поведение пользовательского интерфейса Microsoft Word нужно приложить специальные усилия. Используя команду меню "Tools\Customize\Options", следует включить флажок "Always show full menus").

 

Задание 1

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

 

Задание 2

Языки программирования сами по себе устроены достаточно просто. VBA тут не является исключением из правил. Скорее наоборот, более простой язык трудно себе представить. Основные богатства любого языка программирования - это функции, расположенные, как правило, в стандартных библиотеках языка. И чем большее количество функций Вам знакомо, тем большим количеством возможностей Вы потенциально владеете. В случае Microsoft Word стандартные функции организованы в иерархическую структуру, которая называется 'Объектная модель Microsoft Word'. Наиболее часто используемыми являются объекты Application (этот объект представляет собственно Microsoft Word), Document (документ), Selection (выделение) и Range (диапазон, представляющий произвольный 'кусок' документа).

Справочные материалы по объектной системе Microsoft Word можно найти на сайте корпорации Microsoft. А также в приложении к этой книге. Изучите или хотя бы просмотрите все функции и методы перечисленных объектов.

 


Этюды для программистов Microsoft Word. Этюд 1.2. Изменение регистра символов.


© 2000-2009 Евгений Ахунджанов, Все Права Сохранены.
www.transcriber.ru | Послать письмо автору