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

Home ] Up ] Этюд 2.1. Встроенные панели инструментов ] Этюд 2.2. Программное создание панели инструментов ] Этюд 2.3. Встроенные иконки ] Этюд 2.4. Инструменты для работы с картинками ] Этюд 2.5. Изменяемая панель инструментов ]


Этюд 2.1. Встроенные панели инструментов

МЕНЮ, нескл., ср. (фр. menu).
Листок с перечнем кушаний.

Толковый словарь Ушакова
http://dic.academic.ru/dic.nsf/ushakov/858458

В этом этюде изучаются простейшие свойства панелей инструментов Microsoft Word и их элементов. Также рассматривается создание пользовательской панели инструментов в "визуальном" режиме (то есть c помощью встроенных в Microsoft Word инструментов, без использования VBA), добавление на панель кнопок и меню, редактирование кнопок и возможности встроенного редактора иконок. Программное создание панели инструментов рассматривается в следующем этюде 2.2 "Программное создание панели инструментов".

Ресурсы

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

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

Задача

Требуется создать три макроса для "распечатки" свойств встроенных панелей инструментов Microsoft Word. Первый макрос AhToolBarsBuiltinPrint1 должен распечатывать имена всех панелей инструментов Microsoft Word вместе с их индексами. Второй макрос AhToolBarsBuiltinPrint2 должен запрашивать имя панели инструментов и распечатывать имена  всех элементов управления заданной панели инструментов вместе с их индексами и номерами встроенных иконок. Третий макрос AhToolBarsBuiltinPrint3 должен распечатывать имена всех элементов управления всех панелей инструментов. Под "распечаткой" понимается вывод текста в виде форматированной таблицы.

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

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

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

В таблице перечислены кнопки панели инструментов "AhToolBarsBuiltin" вместе с соответствующими макросами.

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

Макрос

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

Help

AhToolBarsBuiltinHelp

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

CommandBars

AhToolBarsBuiltinPrint1

Все панели управления Microsoft Word

Command Bar Controls

AhToolBarsBuiltinPrint2

Свойства элементов заданной панели управления

All Command Bar Controls

AhToolBarsBuiltinPrint3

Свойства элементов всех панелей управления

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

Панели управления

Далее приведен список панелей инструментов, полученные в результате работы макроса AhToolBarsBuiltinPrint1.

Command Bars

 

Index

Name

1

Standard

2

Formatting

3

Tables and Borders

4

Database

5

Drawing

6

Forms

7

Full Screen

8

Edit Picture

9

Visual Basic

10

Stop Recording

11

Mail Merge

12

Master Document

13

Microsoft

14

Header and Footer

15

Outlining

16

Print Preview

17

Word for Windows 2.0

18

Read Mail

19

Send Mail

20

Extended Formatting

21

AutoText

22

Web

23

WordArt

24

3-D Settings

25

Shadow Settings

26

Picture

27

Reviewing

28

AutoSummarize

29

Exit Design Mode

30

Control Toolbox

31

Text Box

32

Outlook Read Mail

33

Outlook Send Mail

34

Function Key Display

35

Web Tools

36

Menu Bar

37

Refresh

38

Frames

39

AhToolBarsBuiltIn

40

Drop Caps

41

Endnotes

42

Fields

43

Display Fields

44

Field Display List Numbers

45

Form Fields

46

Footnotes

47

Frames

48

Headings

49

Linked Headings

50

Script Anchor Popup

51

Lists

52

Inline Picture

53

Horizontal Line Popup

54

Tables

55

Table Cells

56

Table Headings

57

Table Lists

58

Table Pictures

59

Table Text

60

Whole Table

61

Linked Table

62

Text

63

Linked Text

64

Font Popup

65

Font Paragraph

66

Spelling

67

Grammar

68

Grammar (2)

69

Background Proofing Status Bar

70

Track Changes

71

Frame Properties

72

Hyperlink Context Menu

73

Hyperlink Menu

74

AutoSignature Popup

75

Field AutoText

76

Document Map

77

Shapes

78

Curve

79

Curve Node

80

Curve Segment

81

Floating Picture

82

OLE Object

83

ActiveX Control

84

WordArt Context Menu

85

Rotate Mode

86

Comment

87

Track Changes Indicator

88

Chinese Translation

89

Inline ActiveX Control

90

AutoShapes

91

Callouts

92

Flowchart

93

Block Arrows

94

Stars & Banners

95

Lines

96

Basic Shapes

97

Fill Color

98

Line Color

99

Align or Distribute

100

Rotate or Flip

101

Order

102

Nudge

103

Borders

104

Font Color

105

Shading Color

106

Cell Alignment

107

Text Wrapping

108

Clipboard

Элементы панели

Сначала макрос запрашивает имя требуемой панели

Если панель с введенным именем отсутствует, выдается сообщение об ошибке.

Далее приведен список элементов панели инструментов, полученный в результате работы макроса AhToolBarsBuiltinPrint2

Toolbar 'Standard' Controls

Index

Caption

FaceId

2520

New &Blank Document

3813

23

&Open...

23

3

&Save

3

3738

&Mail Recipient

3738

2521

&Print

2521

109

Print Pre&view

109

2566

&Spelling and Grammar...

2566

21

Cu&t

21

19

&Copy

19

22

&Paste

22

108

&Format Painter

108

128

Can't &Undo

 

129

Can't &Redo

 

1576

Hyperl&ink...

1576

916

&Tables and Borders Toolbar

916

333

&Insert Table...

 

142

&Insert Excel Spreadsheet

 

9

&Columns...

 

204

&Drawing

204

1714

&Document Map

1714

119

&Show All

119

1733

&Zoom:

 

984

Microsoft Word &Help

984

Элементы всех панелей

Распечатываются элементы управления всех панелей. Полный список элементов всех панелей занимает примерно 40 страниц текста.

Модуль AhToolBarsBuiltin

'
' File AhToolBarsBuiltin.dot|AhToolBarsBuiltin
'
' Etudes for Microsoft Word Programmers.
' Etude 2.1. Built-in Toolbars.
'
' First published on http://www.transcriber.ru
'
' © 2000-2008. Evgeny Akhundzhanov. All rights reserved worldwide.
'
Option Explicit

Процедура AhToolBarsBuiltinHelp

'
' AhToolBarsBuiltinHelp
'
Sub AhToolBarsBuiltinHelp()
    MsgBox "Etudes for Microsoft Word Programmers." & vbCrLf & _
        "Etude 2.1. Built-in Toolbars." & vbCrLf & _
        "http://www.transcriber.ru" & vbCrLf & vbCrLf & _
        "Command Bars - Lists all Toolbars" & vbCrLf & _
        "Command Bar Controls - Lists Controls of the Selected Toolbar" & vbCrLf & _
        "All Command Bar Controls - Lists all Toolbars and Controls"
End Sub

Процедура AhArrayPrintAsTable

Процедура AhArrayPrintAsTable вставляет в конец текущего документа заголовок и новую таблицу и затем заполняет таблицу элементами массива arrName.

'
' AhArrayPrintAsTable
'
Sub AhArrayPrintAsTable(ByVal tblIndex As Long, ByVal strHeading As String, ByVal dwHeadFontSize As Long, arrName() As String, ByVal nCols As Long, ByVal dwTextFontSize As Long)
    Dim nCol, nLine, nLines As Long
    nLines = UBound(arrName) / nCols
   
    Selection.EndKey Unit:=wdStory
 
    Selection.InsertParagraph
    Selection.InsertBefore Text:=strHeading
    Selection.Font.Size = dwHeadFontSize
    Selection.Collapse direction:=wdCollapseEnd
   
    Selection.InsertParagraph
    Selection.Font.Size = dwTextFontSize
    Selection.Collapse direction:=wdCollapseEnd
 
    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=nLines, NumColumns:=nCols
 
    With ActiveDocument.Tables(tblIndex)
        ' .Rows(1).HeadingFormat = True
        .Borders.OutsideLineStyle = wdLineStyleThinThickLargeGap
        .Rows.AllowBreakAcrossPages = False
        .AutoFitBehavior (wdAutoFitContent)
    End With
 
    nLine = 0
    For nCol = 1 To nCols
        With ActiveDocument.Tables(tblIndex).Cell(nLine + 1, nCol).Range
            .InsertAfter arrName(nCol - 1)
            .ParagraphFormat.Alignment = wdAlignParagraphCenter
            .Font.Size = dwTextFontSize
            .Font.Bold = True
        End With

    Next nCol
 
 
    For nLine = 1 To nLines - 1
 
    For nCol = 1 To nCols
        With ActiveDocument.Tables(tblIndex).Cell(nLine + 1, nCol).Range
            .InsertAfter arrName(nCols * nLine + nCol - 1)
            .Font.Size = dwTextFontSize
        End With
    Next nCol
   
    Next nLine
 
    Selection.HomeKey Unit:=wdStory
   
End Sub

Процедура AhToolBarDump

'
' AhToolBarDump
'
Sub AhToolBarDump(ByVal tblIndex As Long, ByVal strCBarName As String, ByRef CBControls As CommandBarControls)
Dim ctrl As CommandBarControl
Dim item As CommandBarControl
Dim nItems, nItemsTotal As Long
   
    nItemsTotal = 0
   
    For Each ctrl In CBControls
        nItems = 0
        On Error Resume Next
        nItems = ctrl.Controls.Count
        nItemsTotal = nItemsTotal + 1 + nItems
        Debug.Print ctrl.Caption, ctrl.ID
        If nItems > 0 Then
            For Each item In ctrl.Controls
                Debug.Print "   ", item.Caption, item.ID
            Next item
        End If
    Next ctrl
   
    Const nColumns As Long = 3
    Dim arrName() As String
    ReDim arrName(nColumns * (nItemsTotal + 1))
    arrName(0) = "Index"
    arrName(1) = "Caption"
    arrName(2) = "FaceId"
    Dim k As Long
    k = nColumns
   
    For Each ctrl In CBControls
        nItems = 0
        On Error Resume Next
        nItems = ctrl.Controls.Count
        arrName(k) = ctrl.ID
        arrName(k + 1) = ctrl.Caption
        arrName(k + 2) = ctrl.FaceId
        k = k + nColumns
        If nItems > 0 Then
            For Each item In ctrl.Controls
                arrName(k) = item.ID
                arrName(k + 1) = item.Caption
                arrName(k + 2) = item.FaceId
                k = k + nColumns
            Next item
        End If
    Next ctrl
   
    Dim strTitle As String
    strTitle = "Toolbar '" & strCBarName & "' Controls"
   
    AhArrayPrintAsTable tblIndex, strTitle, 16, arrName, nColumns, 10
   
End Sub

Процедура AhToolBarsBuiltinPrint1

'
' AhToolBarsBuiltinPrint1
'
Sub AhToolBarsBuiltinPrint1()
Dim cbar As CommandBar
    '
    ' Prints names for all Command Bars
    ' There are appr. 107 of them for MS Word 2000
    '
    Const nCols As Long = 2
    Dim arrName() As String
    ReDim arrName(nCols * (CommandBars.Count + 1))
    arrName(0) = "Index"
    arrName(1) = "Name"
   
    Dim k As Long
    k = nCols

    For Each cbar In CommandBars
        Debug.Print cbar.Index & "," & cbar.Name
        arrName(k) = cbar.Index
        arrName(k + 1) = cbar.Name
        k = k + nCols
    Next cbar
   
    Documents.Add
    'Application.WindowState = wdWindowStateNormal
 
    AhArrayPrintAsTable 1, "Command Bars", 16, arrName, nCols, 10
       
End Sub

Процедура AhToolBarsBuiltinPrint2

'
' AhToolBarsBuiltinPrint2
'
Sub AhToolBarsBuiltinPrint2()
    Dim strTBName As String
   
   
strTBName = InputBox("Enter toolbar name: ")
   
    Documents.Add
   
    On Error GoTo ExitLabel
    With CommandBars(strTBName)
        AhToolBarDump 1, .Name, .Controls
    End With
    Exit Sub
   
ExitLabel:
    ActiveDocument.Close
    MsgBox "Invalid toolbar name"
End Sub

Процедура AhToolBarsBuiltinPrint3

'
' AhToolBarsBuiltinPrint3
'
Sub AhToolBarsBuiltinPrint3()
Dim cbar As CommandBar
   
    Documents.Add
   
    Dim tblIndex As Long
    tblIndex = 1
   
    For Each cbar In CommandBars
        AhToolBarDump tblIndex, cbar.Name, cbar.Controls
        tblIndex = tblIndex + 1
    Next cbar
 
End Sub

Создание панели инструментов в "визуальном" режиме

В этом этюде рассматривается создание простой панели инструментов и возможности её "визуального" редактирования. "Визуальный" означает, что пользователь осуществляет все операции вручную.

Создание новой панели инструментов

Выбираем пункт главного меню "Tools\Customize". В диалоге "Customize" выбираем закладку "Toolbars"/"Панели инструментов" и нажимаем кнопку "New".

В диалоге "New Toolbar" вводим имя новой панели инструментов, выбираем шаблон, в котором будет храниться новая панель инструментов и нажимаем кнопку "OK". Результатом проведенных операций является новая пустая панель инструментов.

Чтобы выйти из режима редактирования панелей инструментов нужно нажать кнопку "Close".

Добавление кнопок и меню

В диалоге "Customize" выбираем закладку "Commands"/"Команды", в списке категорий выбираем "Macros"/"Макросы". В списке команд справа отображается список доступных команд (имена публичных процедур VBA без параметров во всех открытых документах и шаблонах).

Перетаскиваем мышкой нужные команды на новую панель инструментов и на ней появляются кнопки, соответствующие выбранным командам. При необходимости удалить команду (кнопку) с панели инструментов просто перетаскиваем кнопку на окно диалога "Customize".

 

При необходимости создания меню в списке категорий выбираем элемент "New Menu" (это последний элемент списка) и перетаскиваем его на панель инструментов. Заполняем меню командами с помощью перетаскивания так же, как и панель инструментов.

Редактирование кнопок

Выбираем пункт главного меню "Tools\Customize". Не обращая внимания на диалог "Customize" - мы собираемся использовать контекстное меню, щелкаем правой кнопкой мыши на редактируемой кнопке.

Операции редактирования

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

 

Операция

Комментарий

Reset

Предназначена для приведения редактируемых встроенных команд Microsoft Word в их исходное состояние.

Delete

Удаление команды

Name

Отображаемое имя команды. В начальном состоянии содержит полное имя макроса команды.

Copy Button Image

Копирование иконки в буфер обмена.

Paste Button Image

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

Reset Button Image

Возвращение иконки в исходное состояние.

Edit Button Image

Редактирование иконки с помощью встроенного редактора иконок.

Change Button Image

Выбор одной из 42-х встроенных иконок.

Default Style

Только иконка.

Text Only (Always)

Только текст (всегда).

Text Only (in Menus)

Только текст (в меню).

Image and Text

Иконка и текст.

Begin a Group

Вставка разделителя перед выбранной кнопкой.

Assign Hyperlink

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

Встроенный редактор иконок

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

Выводы

Визуальный режим предназначен для создания простых панелей инструментов, содержащих (только) кнопки вызова команд (макросов) и меню (элементы управления типа msoControlButton и msoControlPopup). Для подавляющего большинства пользователей этого достаточно. При необходимости создания более сложных элементов управления нужно осваивать программные способы создания и настройки панелей инструментов.

Программное создание панелей инструментов рассматривается в (следующем) этюде 2.2.

 

Задание 1

В стандартной конфигурации Microsoft Word содержит слишком много команд и панелей управления. Создайте собственную панель управления "Мои команды" и разместите на ней все команды, которыми Вы реально пользуетесь. Сделайте невидимыми все стандартные панели инструментов, которыми вы не используете, или используете из них одну две команды. Используемые команды просто перетащите на свою панель инструментов "Мои команды". Попробуйте прожить одну неделю пользуясь командами только своей панели инструментов. При необходимости добавляйте в неё команды, которые вы забыли добавить при создании панели. Через неделю оцените удобство предложенного метода.

 

Задание 2

Создайте свою панель инструментов или используйте один из глобальных шаблонов, рассмотренных в предыдущих этюдах. Запустите все макросы распечатки свойств панелей управления и проанализируйте полученные результаты. Отличаются ли пользовательские панели инструментов Microsoft Word от встроенных и если отличаются, то чем именно?

 

Задание 3

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

 

Этюды для программистов Microsoft Word. Этюд 2.1. Встроенные панели инструментов.


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