Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 семестр / vba_2002

.pdf
Скачиваний:
82
Добавлен:
09.04.2015
Размер:
9.9 Mб
Скачать

Предоставление

справки в приложениях

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

(туда им и дорога)!

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

Справка в приложениях Excel

Если в Excel разрабатывается довольно сложное приложение, то может возникнуть острая необходимость в создании справочного руководства для потенциальных пользователей приложения. Таким образом, пользователям будет комфортно работать с приложением, и они не станут беспокоить вас телефонными звонками. Ешс одним преимуществом интерактивного справочного руководства является постоянная его доступность (это руководство невозможно потерять или "похоронить" под огромной стопкой книг).

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

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

О примерах, приводимых в этой главе

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

Как можно заметить из рисунка, ячейки с числами отображают общее количество записей в базе данных (С2, рассчитывается с помощью формулы), номер текущей записи (сз), первая запись, которая будет напечатана (С4) и последняя запись, которая будет напечатана (С5). Для того чтобы отобразить определенную запись, пользователь вводит значение в ячейку сз. Распечатать последовательность писем можно, указав первую и последнюю запись в полях С4 иС5.

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

•<• Форма — рабочий лист, который содержит текст приложения.

<• Данные — рабочий лист, который содержит базу данных из семи полей.

•Ф- Справка — этот рабочий лист представлен только в примерах, в которых текст справочной системы сохраняется в рабочих книгах.

& PrintMod — модуль VBA, который содержит макросы печати писем,

-у- HelpMod — модуль VBA, который содержит макросы, отображающие текст справочной системы. Содержимое этого модуля может меняться в зависимости от контекста.

•Ф userForm — пользовательское диалоговое окно, отображаемое только тогда, когда избранная методика предоставления справочных сведений предполагает использование форм UserFonn.

620

Глава 24. Предоставление справкив приложениях

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

Неофициальные справочные системы. Этот метод отображения справочной информации требует использования только стандартных компонентов Excel (например, диалоговых окно UserForm).

Официальные справочные системы. Такие справочные системы используют или откомпилированный файл HLP, который создается с помощью средства Windows Help System, или откомпилированный файл СНМ, который создается с помощью средства HTML Help System.

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

Все примеры из этой главы вы найдете на Web-уэле издательства.

Справочная система, построенная с помощью компонентов Excel

Возможно, самым простым методом предоставления справочного руководства является использование средств, которые поддерживаются в Excel. Основное преимущество данного метода— необязательность изучения методов создания файлов WinHelp или HTML Help. Ознакомление с последними методами может занять большое количество времени и увеличить срок разработки приложения.

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

Комментарии к ячейкам. Проще не бывает!

Элемент управления Text Box (Текстовое поле). Простой макрос, который отображает на экране текстовое поле, содержащее справочную информацию.

Рабочий лист. Простым способом добавления справочного руководства в приложение является вставка рабочего листа, на котором отображается необходимая справочная информация. После ввода информации рабочий лист можно назвать Справка. Если пользователь щелкнет на ярлыке этого листа, будет активизирована справочная система приложения.

Пользовательское диалоговое окно. Некоторые методы построения справочного руководства подразумевают использование диалоговых окон UserForm.

Использование комментариев к ячейкам для предоставления справки

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

ЧастьVI.Разработкаприложений

621

комментария отображается в небольшом окне. Еще одним преимуществом этой методики является отсутствие необходимости в применении макросов.

Помимо этого возможно автоматическое отображение комментариев к ячейкам. Следующий оператор VBA обеспечивает отображение индикаторов комментариев в ячейках:

Application.DisplayCommentIndicator = xlCommentIndicatorOnly

Еще можно воспользоваться командой Excel Данные^Проверка, которая отображает диалоговое окно и позволяет указать критерии проверки введенных в ячейку или диапазон данных. Вкладка Сообщение для ввода диалогового окна Проверка вводимых значений позволяет указать текст сообщения, которое будет отображаться при активизации ячейки. Этот текст ограничен длиной в 250 символов.

Применение текстового поля для предоставления справки

Использование элемента управления T e x t Box для отображения справочной информации является еще одним простым в реализации методом предоставления справочной информации пользователю. Создать элемент управления Text Box достаточно просто. Используйте кнопку Надпись на панели инструментов Рисование, введите необходимую справочную информацию и отформатируйте текст по своему вкусу. На рис. 24.1 показан пример элемента управления T e x t Box, который применяется для отображения справочной информации.

Рис, 24.1. Использование элемента управления Text Box для отображениясправочногоруководствапользователя

Использование кнопки Надпись на панели инструментов Рисование является более предпочтительным способом, чем применение элемента управления ActiveX Поле на панели инструментов Элементы управления, так как первый элемент управления предоставляет возможность форматирования текста. Другими словами, элементуправления Надписьна панели инструментов Рисование позволяетформатироватькаждыйсимволтекставэлементеуправления.

622

Глава 24. Предоставление справки в приложениях

Зачастую требуется, чтобы элемент управления Text Box оставался невидимым. Для этого требуется создать для приложения макрос и кнопку, которые будут устанавливать свойство V i s i b l e элемента управления Text Box в значение True. Примером такого макроса может служить следующий код. В данном случае элемент управления Text Box называется HelpText.

Sub ToggleHelpO ActiveSheet.TextBoxesC'HelpText") .Visible =

Hot ActiveSheet-TextBoxesI"HelpText").Visible End Sub

Использование рабочего листа для сохранения текста справочного руководства

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

На рис. 24.2 показан пример рабочего листа, в котором находится справочная информация. Мною создан диапазон, который содержит текст справки и имитирует страницу блокнота (такой дизайнерский прием некоторым может нравиться, а некоторым — нет).

Рис.24.2.Размещениесправочногоруководствана отдельном рабочем листе является одним из самыхпростыхспособов

Для того чтобы не позволить пользователю прокручивать рабочий лист Справка, макрос изменяет свойство S c r o l l A r e a рабочего листа. Таким образом, значение этого свойства не сохраняется вместе с рабочей книгой, его необходимо устанавливать каждый раз при активизации рабочего листа. Кроме того, рабочий лист защищен, чтобы пользователь не мог вносить изменения в отображаемый текст. Более того, первая строка зафиксирована, чтобы кнопка Назад всегда оставалась видимой, независимо от того, насколько прокручивается рабочий лист.

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

Часть VI Разработка приложений

623

Отображение справочной информации в пользовательском диалоговом окне

Самым удачным способом предоставления справочного руководства средствами Excel можно считать использование диалоговых окон UserForm, в которых отображаются справочные сведения. В данном разделе описываются некоторые методики, которые подразумевают применение пользовательских диалоговых окон.

Использование элементов управления Label для отображения текста справочного руководства

На рис. 24.3 показано диалоговое окно UserForm, которое содержит два элемента управления Label: один элемент управления используется для отображения заголовка, а второй — для отображения самого текста. Элемент управления S p i n B u t t o n позволяет пользователю перемещаться по разделам справочного руководства. Сам текст сохраняется на рабочем листе. Названия разделов справочного руководства хранятся в столбце А, а текст разделов — в столбце В.

Рис.24.3. Щелчокна элементеуправления SpinButton приведет к отображению другойтемысправочногоруководства

Щелчок на элементе управления SpinButton приводит к выполнению представленной ниже процедуры. Эта процедура устанавливает свойство Caption двух элементов управления Label так, чтобы они отображали текст из соответствующей строки рабочего листа Справка.

Private Sub SpinButtonl_Change() HelpTopic = SpinButtonl.Value

LabelTopicCaption = Sheets{"Справка"). _ Cells(HelpTopic, 1)

LabelText.Caption = Sheets{"Справка").Cells(HelpTopic, 2) Me.Caption = APPNAME & ": Topic " & HelpTopic & "/" _

& SpinButtonl.Max End Sub

В данном случае APPNAME является глобальной константой, которая содержит название приложения.

Использование "прокручиваемого" элемента управления Label для отображения текста справочного руководства

Данная методика заключается в отображении текста справочного руководства с помощью единственного элемента управления Label. По причине того, что элемент управления Label не может содержать вертикальной полосы прокрутки, он размещается внутри элемента управления Frame, поддерживающего использование обеих полос прокрутки. На рис. 24.4 показан пример применения диалогового окна UserForm, настроенного описанным выше способом. Пользователь может прокручивать текст с помощью полосы прокрутки элемента управления Frame.

Текст, который отображается в элементе управления L a b e l , получен из рабочего листа Справка. Передача текста осуществляется на этапе инициализации диалогового окна UserForm.

624

Глава 24. Предоставление справки в приложениях

Листинг 24.1 содержит исходный код процедуры U s e r F o r m _ I n i t i a l i z e этого диалогового окна. Обратите внимание на то, как код меняет значение свойства S c r o l l H e i g h t элемента управления Frame с целью обеспечить прокрутку' для всего элемента управления Label . В данном случае APPNAME является глобальной константой, которая содержит название приложения.

Рис.24.4.Использованиеэлементауправления Frameсцельювнесениявэлементуправления Label полосы прокрутки

,ЛИСТИНГ24.1. Создание элемента управленияLabel с прокруткой, который будет отображать текст, содержащийся на рабочем листе

Private Sub UserForm_lnitialize()

Me.Caption = APPNAME & ". Справка"

LastRow = Sheets("Справка") .Range("A65536").End(xlUp).Row

txt = " "

For r - 1 To LastRow

txt = txt & Sheets{"Справка").Cells(r, I).Text & vbCrLf

Next r

With Label1

.Top = 0

.Caption = txt

.Width = 160

.AutoSize - True

End With

Framel.ScrollHeight = Labell.Height

Framel.ScrollTop = 0

End Sub

По причине того, что элемент управления L a b e l не может отображать форматированный текст, в рабочем листе Справка использовались подчеркнутые символы для выделения названий разделов справочного руководства.

Использование выпадающего списка для выбора раздела справочного руководства

Пример, приведенный в этом разделе, расширит возможности предыдущего примера. На рис. 24.5 показано диалоговое окно UserForm, которое содержит элемент управления СотЬоВох и элемент управления Label. Пользователь м^ожет выбрать раздел справочного руководства из выпадающего списка, который предоставляется элементом управления ComboBox, a также последовательно просматривать разделы с помощью кнопок Назад и Далее.

Приведенный пример немного сложнее, чем пример из предыдущего раздела, но он предоставляет большую гибкость. В данном случае используется методика Label-B-Frame (она рассматривалась ранее), что позволяет вводить разделы справочного руководства любой длины.

ЧастьVI.Разработкаприложений

625

Рис.24.5.Выбортекста,отображаемого в элементе управления Label, с помощью выпадающегосписка

Текст справочного руководства хранится в рабочем лнсте, который называется Справка. Он расположен в двух столбцах; А и В. Первый столбец содержит названия разделов справочного руководства, а второй— текст разделов. Опции элемента управления ComboBox добавляются во время выполнения процедуры U E e r F o r m _ I n i t i a l i z e . Переменная C u r r e n t T o p i c определена на уровне модуля и содержит целое число, которое идентифицирует выбранный раздел справочного руководства.

P r i v a t e Suto UpdateFormO

ComboBoxTopics.Listlndex = CurrentTopic - 1 Me.Caption = HeZpFormCaption &. _

" (" & CurrentTopic & " из " & TopicCount & " ) "

With LabelText

.Caption = HelpSheet.Cells(CurrentTopic, 2)

.AutoSize = False

.Width = 212

.AutoSize = True End With

With Frame1

.ScrollHeight = LabelText Height + 5

.ScrollTop = 1 End With

If CurrentTopic = 1 Then

NextButton.SetFocus

Elself CurrentTopic = TopicCount Then

PreviousButton.SetFocus

End If

PreviousButton.Enabled = CurrentTopic <> 1

NextButton.Enabled = CurrentTopic <> TopicCount

End Sub

Использование помощника по Office для отображения справочного руководства

Скорее всего, вы уже знакомы с помощником по Office — смешным аннмированным персонажем, который всегда готов оказать помощь пользователю. Многие пользователи не очень признают такой способ предоставления справочной информации. Судя по всему, Microsoft осознала свою ошибку, и в Office XP по умолчанию он отключен.

Однако помощник по Office предоставляет определенный программный интерфейс, поэтому (если необходимо) его можно использовать для отображения справочной информации собственного приложения. На рис. 24.6 показан помощник по Office, который представляет текст раздела справочного руководства.

626

Глава 24. Предоставление справки в приложениях

Рис. 24.6. Использование помощника по Office для предоставлениясобственнойсправочнойинформации

Основной процедурой использования помощника по Office для отображения текста справочного руководства является код, показанный в листинге 24.2. Текст справочного руководства хранится на рабочем листе в двух столбцах. Этот рабочий лист называется Справка. Столбец А содержит названия разделов, а столбец В — текст самих разделов.

Листинг 24.2. Вызов помощника по Office для отображения ; справочной информации

Public Const APPNAME As String = "Слоноводы"

Dim Topic

Dim HelpSheet

Sub ShowHelpI)

Set HelpSheet = ThisWorkbook.Worksheets("Справка")

Application.Assistant.On = True

Topic = 1

With Assistant.NewBalloon

.Heading = "Раздел справки " & Topic & " : " & vbCrLf & _

HelpSheet.Cells(Topic, 1)

.Text = HelpSheet.Cells(Topic, 2)

.Button = msoButtonSetNextClose

.BalloonType = msoBalloonTypeButtons

.Mode = msoModeModeless

.Callback = "ProcessRequest"

.Show End With

End Sub

Процедура начинает свою работу с проверки работоспособности помощника no Office. После этого создается новый объект B a l l o o n (помощник по Office отображает текст справочного руководства во всплывающем окне) и использует первый раздел справочного руководства из рабочего листа Справка для задания свойств Heading и Text этого объекта. Свойства объекта B a l l o o n устанавливаются таким образом, чтобы он содержал кнопки Далее и Закрыть, как это «о умолчанию определено в мастере. Затем процедура устанавливает

ЧастьVI.Разработкаприложений

627

свойство Mode в значение msoModeModeless, что позволяет пользователю работать над другими приложениями в процессе изучения справочной информации. Свойство Callback содержит имя процедуры, которая будет выполняться при щелчке на кнопке. Наконец,

всплывающееокнопомощникаотображаетсяспомощьюметодаShow.

Процедура ProcessRequest, которая показана в листинге 24.3, вызывается каждый раз, когда пользователь щелкает на одной из кнопок всплывающего окна.

Листинг 24.3. Предоставление собственного справочного руководства с помощью помощника no Office

Sub ProcessRequest(bin As Balloon, lbtn As Long, lPriv As Long) Dim NumTopics As Integer

NumTopics = Application,WorksheetFunction.CountA(HelpSheet. _ Range("A:A"))

Assistant.Animation = msoAnimationCharacterSuccessMajor Select Case lbtn

Case msoBalloonButtonBack

If Topic <> 1 Then Topic = Topic - 1 Case msoBalloonButtonNext

If Topic <> NumTopics Then Topic = Topic + 1 Case msoBalloonButtonClose

bin.Close Exit Sub

End Select With bin

.Close

Select Case Topic

Case 1: .Button - nsoButtonSetNextClose

Case NumTopics: .Button = msoButtonSetBackClose Case Else: .Button = msoButtonSetBackNextClose

End Select

.Heading = "Раздел справки " & Topic & ": " & vbCrLf & HelpSheet .Cells(Topic, 1)

.Text = KelpSheet.Cells(Topic, 2)

.Show End With

End Sub

Процедура ProcessRequest отображает одну из нескольких анимационных последовательностей, после чего использует конструкцию Select Case для выполнения определенного действия, которое зависит от того, на какой из кнопок щелкнул пользователь. Информация о кнопке, на которой щелкнул пользователь, передается в процедуру с помощью переменной lbtn. Кроме того, процедура указывает, какие кнопки необходимо отображать, что зависит от текущего раздела справочного руководства.

Если вам необходимо получить дополнительную информацию о программном интерфейсе помощника по Office, то стоит обратиться ь: интерактивному справочному руководству.

Этот пример находится на Wtsb-узле издательства.

628

Глава 24. Предоставление справки в приложениях

Соседние файлы в папке 2 семестр