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

Orlov_VBA

.pdf
Скачиваний:
23
Добавлен:
13.03.2016
Размер:
7.79 Mб
Скачать

Рис. 4.15. Набор страниц.

11. Полоса прокрутки (рис. 4.16). Такая же, как и в окне Word. Может передавать в программу (с помощью свойства Value6) число, равное расстоянию от ее начала до бегунка. Расстояние считается на основе задаваемых в Окне Свойств (или в программе - свойства Min и Max) параметров - величина, заданная в параметре Min, присваивается крайнему верхнему (или левому) положению бегунка, а величина параметра Max - соответственно крайнему нижнему (или правому). Шаг перемещения бегунка, цвет, ориентацию (вертикальную или горизонтальную) полосы прокрутки можно задавать, так же, как и некоторые другие параметры.

6 Это означает, что расстояние до бегунка можно получить командой типа "a= ScrollBar.Value", где ScrollBar - имя

полосы прокрутки (задается в Окне Свойств, в параметре Name).

Рис. 4.16. Полоса прокрутки.

12. Счетчик (рис. 4.17). Две нажимающиеся кнопки со стрелками. Может передавать в программу свое значение с помощью свойства Value. Так же, как и Полоса прокрутки, допускает задание своих минимального и максимального значений, а также шага изменения значения и начальной его величины.

Рис. 4.17. Счетчик.

13. Рисунок (рис. 4.18). В этот элемент можно вставить из файла рисунок, который будет храниться в форме (и шаблоне или документе с ней).

Рис. 4.18. Рисунок на форме.

Для вставки самого рисунка нужно после помещения на форму элемента управления Рисунок в Окне свойств выбрать пункт "Picture", нажать на кнопку слева от него и в появившемся окне открытия файла выбрать нужную картинку (рис. 4.19).

Рис. 4.19. Вставка рисунка.

У каждого элемента имеется свое уникальное имя, а также набор свойств. Их можно посмотреть в Окне свойств, выделив элемент и выбрав из контекстного меню правой кнопки мыши пункт "Свойства". Стоит внимательно изучить все возможные свойства для каждого элемента, по возможности осознав их предназначение. При необходимости можно вызвать справку по каждому свойству, поставив на него курсор и нажав F1. Большой набор свойств также имеет сама форма.

С помощью выпадающего меню в Окне свойств можно быстро перейти к свойствам необходимого элемента (рис. 4.20).

Рис. 4.20. Выпадающее меню Окна свойств - навигатор по элементам формы .

Среди наиболее распространенных свойств, имеющихся почти у всех элементов - Caption (т.е. надпись на поверхности или в заголовке, если он есть), Top и Left - координаты верхнего левого угла элемента, Height и Width - высота и ширина, Enabled - доступность для изменений пользователем, TabIndex - число, показывающее, в какую очередь на данный элемент перейдет фокус (т.е. возможность изменения пользователем содержания или состояния) при переходах между элементами с помощью клавиши табуляции (можно запретить такой переход на какой-либо элемент, указав его свойство TabStop как False). Обратите внимание на свойства Picture, PictureAlignment, PictureSizeMode, PictureTiling собственно формы - с их помощью на поверхность формы можно поместить какой-нибудь фоновый рисунок.

Однако вышеперечисленные "стандартные" элементы управления - отнюдь не все, которые могут присутствовать на форме. Более того - они составляют лишь весьма малую часть всего набора таких элементов. Дело в том, что в окне "Сервис - Дополнительные элементы" ("Tools - Additional Controls", рис. 4.21) перечислены все элементы управления, которые в принципе могут быть использованы в программе на Visual Basic for Applications.

Элемент управления - это не что иное, как деталь окна программы, его часть. Внешний вид элемента, набор его возможных свойств и характер его изменения при изменении этих свойств, передаваемые этим элементом в программу параметры описываются при создании элемента управления. В Windows элементы управления хранятся в специальных библиотеках (с расширением dll, cpl) или особых файлах таких элементов - с расширением .ocx. Создаются такие файлы с помощью особых сред разработок (например, на языках Си, Visual Basic) и интегрируются в Windows при инсталляции приложений, их содержащих.

Для того, чтобы элемент управления из какой-либо библиотеки мог быть использован при создании формы в программе на Visual Basic for Applications, эту библиотеку необходимо подключить. Делается это простым проставлением отметки против имени нужной библиотеки в окне "Сервис -

Дополнительные элементы". При этом на Панели инструментов "Панель управления" (та, которая Toolbox) появляются новые элементы, которые можно располагать на форме.

Рис. 4.21. Подключаемые элементы управления.

Как нетрудно понять из содержимого окна, вышеперечисленные элементы управления относятся к набору Microsoft Forms 2.0, хранятся в библиотеке fm20.dll и присутствуют на любом компьютере с

Microsoft Office.

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

Весьма полезным элементом управления является "Календарь" (рис.4.22), представляющий собой календарь на определенный месяц. "Календарь" устанавливается при инсталляции Microsoft Office (если он отмечен как устанавливаемый в соответствующей графе установщика в разделе "Microsoft Access") и отображает распределение дней определенного месяца по дням недели. При смене месяца или года с помощью входящих в "Календарь" выпадающих меню распределение дней автоматически пересчитывается. "Календарь" снабжен подробной справкой (выводится по F1, если нажать ее, выделив вставленный на форму "Календарь"), в русской версии Microsoft Office даже переведенной на русский язык. С помощью "Календаря" весьма удобно получать от пользователя какую-либо дату, которую он должен ввести.

"Календарь" подключается к Редактору VBA там же, где и все остальные дополнительные элементы управления - в окне "Сервис - Дополнительные элементы".

Рис. 4.22. Элемент управления "Календарь".

С помощью элемента управления "Windows Media Player" можно вставить на форму проигрыватель аудио- и видеофайлов. Имя файла для проигрывания, а также параметры отображения полосы поиска, кнопок управления проигрыванием и показом задаются либо через Окно Свойств, либо программно. Теперь Word можно превратить в настоящий кинозал и даже развлекать пользователя просмотром фильма в то время, пока программа работает (рис. 4.23). Возможности проигрывателя по воспроизведению мультимедийных файлов, встроенного в программу на Visual Basic for Applications,

такие же, как и у самого Windows Media Player.

Рис. 4.23. Любимый фильм в среде Word - это не шутка.

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

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

События форм. Необходимо помнить, что создание элемента - только начало работы над формой. Подавляющее большинство элементов сами по себе элемент никаких действий не выполняют, за исключением тех, которые их определяют. Кнопка - нажимается под мышкой или Enter'ом, список показывает значения, бегунок на полосе прокрутки двигается, во флажке можно поставить и убрать галку, но не более того! (Разве что "Windows Media Player" играет сам по себе.)

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

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

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

Private Sub CommandButton1_Click()

End Sub

Теперь в текст этой процедуры можно вводить команды, которые выполнятся, если событие в заголовке - Click мыши - произойдет. Это событие считается стандартным для кнопок, флажков, рисунков, рамок, переключателей и окон отображения текста. Для остальных стандартных элементов - полей ввода текста, полос прокрутки, счетчиков и др. - стандартным считается событие Change, то есть их изменение, а для дополнительных элементов управления - те события, которые заданы таковыми их создателями.

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

Рис. 4.23. Выпадающий список событий.

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

У некоторых событий есть параметры, с которыми информация об его происшествии передается программе. Так, процедура обработки события KeyDown (то есть нажатия какой-либо клавиши тогда, когда активен данный элемент) имеет вид

Private Sub CommandButton1_KeyDown(ByVal KeyCode As

MSForms.ReturnInteger, ByVal Shift As Integer)

End Sub

Переменная KeyCode будет после срабатывания данной процедуры будет иметь значение, равное коду нажатой клавиши, а переменная Shift - 1, если соответствующая клавиша была нажата, и 0, если нет. Эти переменные можно использовать в процедуре обработки события.

Подавляющее большинство свойств (для стандартных элементов управления - все), задаваемых в Окне свойств, можно изменять и из программы. Например, команда TextBox1.Enabled=True даст возможность пользователю ввести текст в поле ввода TextBox1, а команда CheckBox1.Value=False уберет галку из флажка с именем CheckBox1. Эта возможность делает формы Visual Basic for Applications динамическими - то есть содержимое форм может меняться немедленно в ответ на действия пользователя без выгрузки и повторной загрузки формы. Форма может работать как обычное диалоговое окно программы для Windows - например, выбор пользователем значения из списка может каждый раз выводить в форму какой-либо текст, разный для разных значений.

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

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

Для вызова формы из программы следует поместить в ее текст команду ИмяФормы.Show.

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

Форму можно убрать с экрана и методом Hide (командой ИмяФормы.Hide или Me.Hide в одном из обработчиков событий формы). При этом значения всех переменных формы сохраняются, и к ним можно обращаться из программы согласно правилам обьектно-ориентированного языка. Например, для получения значения окна ввода текста скрытой формы используется примерно такая команда: "a=UserForm1.TextBox1.Value".

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

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

Формы, так же как и модули, могут быть сохранены в отдельных файлах путем экспортирования функцией "Экспорт файла" своего контекстного меню правой кнопки мыши в Менеджере проектов или путем перетаскивания ее названия из Менеджера проектов в Explorer. Но, в отличие от модулей, при сохранении форм получается два файла, в одном из которых содержится текст программы реакции формы на события, а в другом - информация о расположении элементов на форме, их свойствах, а также рисунки и фон формы. Поэтому при импортировании формы необходимо, чтобы оба этих файла были в одной папке.

* * *

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]