52953.fb2
Во время запуска окно формы должно быть выбранным. В редакторе Visual Basic маркеры выделения по периметру формы остаются видимыми и при переключении в другое окно редактора Visual Basic. Форма может казаться выделенной, но при этом не запускаться нажатием клавиши <F5>. Так что если вдруг на экране неожиданно возникнет диалоговое окно Macros (Макросы), просто щелкните сначала в нем на кнопке Cancel (Отмена), а затем в любом месте нужной вам формы, прежде чем повторить попытку ее запуска.
Чтобы прекратить выполнение формы, которую вы еще не снабдили кнопкой Отмена, щелкните на ее закрывающей кнопке, находящейся с самого края, справа в строке заголовка формы. Или нажмите <Alt+Tab> и переключитесь в окно редактора Visual Basic, где можно щелкнуть на кнопке Reset (Остановить выполнение) панели инструментов.
Чтобы запустить форму в автономном режиме, вы должны находиться в окне редактора Visual Basic и использовать только что описанные приемы. Но форма создается для ее запуска из VBA-приложения, для чего вам нужно активизировать форму из программного кода, как рассказано дальше в настоящей главе, а сам программный код выполнить с помощью приемов, обсуждавшихся в главе 4.
Напомню еще раз, что формы и элементы управления - это полноценные объекты VBA. со своими свойствами, методами и событиями. Формы и элементы управления отличаются от других объектов лишь одним; вы можете менять их свойства в диалоговых окнах без программирования. Правда, для каждого элемента управления (за исключением некоторых надписей и фреймов) вам все же потребуется написать некоторый программный код. Да и формы тоже часто требуют программирования. Не забывайте об этом при обдумывании плана работ по своему проекту. Этап программирования в процессе создания форм обсуждается дальше в настоящей главе.
Один момент, касающийся форм в Microsoft Access: хотя для создания VBA программ в Access и используется стандартный язык VBA, а формы Access со своими элементами управления выглядят и работают точно так же, как и в других VBA-приложениях, формы Access все же не являются стандартными VBAформами. Свойства элементов управления в Access отличаются от свойств стандартных элементов управления VBA, поэтому формы, созданные в Access, и формы, созданные в других VBA-приложениях, не взаимозаменяемы.
Создавать формы в VBA легко и просто, но их проектирование в реальной программе требует тщательного планирования. Не забывайте, что формы являются частью большой программы, которая имеет вполне определенное практическое назначение. Поэтому, прежде чем начать забавляться с формами, уделите хотя бы немного времени следующим шагам.
1. Определите цель для своей программы.
Это потребуется, даже если в программе нет форм вообще, но если формы нужны, то при их создании всегда следует помнить о главной цели всей программы.
2. Для каждой из форм в программе определите ту специальную задачу, которую должна решать данная форма в русле главной задачи программы.
Какую информацию должна отображать форма, какая информация потребуется от пользователя и какие данные потребуются пользователю для того, чтобы решить, в какое русло направить выполнение программы дальше? Ответы на эти вопросы вы должны трансформировать в конкретные элементы формы.
3. Для каждой специальной задачи подберите тот элемент управления, который лучше всего подходит для ее решения.
Вы собираетесь попросить пользователя выбрать одну из нескольких взаимоисключающих возможностей? Тогда используйте кнопки переключателей. Но если возможности независимы, то лучше всего использовать флажки.
4. Решите, где именно разместить каждый из элементов управления в форме.
Критериями принятия решения должны быть важность выполняемой элементом управления задачи, вероятная частота использования, связь с другими выполняемыми задачами (чтобы знать, с какими другими элементами управления сгруппировать данный).
5. Выяснив все эти детали, сделайте (хотя бы мысленно) набросок общего вида своих форм.
Не размещайте в формах слишком много элементов управления. Разумное использование форм с множеством страниц уменьшает обшее число форм, но будьте готовы также добавить в проект формы, если это поможет избежать беспорядка и упростить использование форм.
6. После того как вы учтете все вышеописанные практические детали, можете подумать об эстетических элементах.
Будет ли особый шрифт на кнопках или стрелки в виде ракет на кнопках прокрутки помогать пользователю работать с формой? В разумных пределах правильно подобранные цвета, шрифты и изображения, несомненно, привлекают интерес, но неумеренность здесь вызовет только раздражение.
Я не говорю, что вы должны потратить полжизни на абстрактное планирование. Просто даже общее представление о том, что нужно получить, поможет в разработке пробной версии и тестировании ее в надежде выяснить, что в конце концов будет работать, а что - нет.
И я хотел бы обратить ваше внимание на то, что при полном игнорировании планирования впоследствии наверняка потребуется немало усилий для переделки созданных форм.
При разработке форм для VBA-проекта иногда полезно напечатать копии форм, которые всегда будут под рукой даже там, где нет компьютера. Распечатки набросков форм годятся и для их критического редактирования, и для предъявления их потенциальным пользователям или коллегам-программистам для выяснения соответствующих мнений.
Чтобы распечатать формы проекта в редакторе Visual Basic, выполните следующее.
1. Если нужно распечатать только одну форму, выделите ее в окне проводника проектов, если же нужно распечатать все формы некоторого проекта, выделите форму, модуль или любой другой компонент этого проекта.
2. Выберите File=Print или нажмите <Ctrl+P>.
3. В появившемся диалоговом окне отметьте флажок Form Image (Изображение формы)
4. Снимите флажок Code (Программный код), если вы не желаете распечатывать вместе с изображением формы ее программный код.
5. Выберите Current Module (Данный модуль), если нужно распечатать только одну форму, или Current Project (Данный проект), если нужно напечатать все формы проекта.
6. Щелкните на кнопке ОК.
Только что созданная новая форма (рис. 10.1) представляет собой чистое поле для ваших упражнений в разработке пользовательского интерфейса. Вы можете менять размеры формы и ее положение на экране, подбирать форме цвета и размещать в ней элементы управления, которые будут выполнять важные задачи.
Рис. 10.1. Только что созданная форма (обратите внимание на панель элементов управления возле нее и пиктограммы элементов управления в этой панели)
Перед созданием новой формы убедитесь, что активен именно тот проект, в котором должна разместиться создаваемая форма. Сначала откройте документ проекта в VBA приложении, затем переключитесь в редактор Visual Basic. Если приложение позволяет открыть несколько документов сразу или если для документа используется шаблон, то для выбора нужного проекта необходимо использовать проводник проектов. (О работе с проводником проектов говорилось в главе 5.)
Для создания новой формы VBA выберите Insert=UserForm из меню редактора Visual Basic или из контекстного меню (вызываемого щелчком правой кнопки мыши) в окне проводника проектов. Новая форма (точнее, заготовка новой формы) появится в специально созданном для нее окне, а возле формы появится панель элементов управления (см. рис. 10.1) - специальная панель инструментов, содержащая элементы управления, которые можно разместить в этой форме.
Теперь заготовка формы на экране, и можно добавлять в нее элементы управления - всякие разные штучки в форме, с помощью которых взаимодействуют люди. Элементы управления берутся из панели элементов управления (панели Toolbox).
Панель элементов управления автоматически появляется при создании новой формы, если только перед этим вы не закрыли эту панель. Панель элементов управления грациозно исчезает с экрана, когда вы щелкаете в любом из окон, не содержащих формы, и возникает снова после щелчка в окне формы. Если же панель элементов управления не видна, когда она вам понадобилась, выберите View=Toolbox, чтобы вызвать ее.
Чтобы добавить в форму элемент управления, выполните следующее.
1. Щелкните на пиктограмме того элемента управления в панели элементов управления, который вы хотите поместить в форму.
2. Переместите указатель мыши на форму.
Указатель мыши примет вид крестика с рисунком выбранного элемента управления.
3. Нажмите левую кнопку мыши и перетащите указатель, очертив область на форме, которую должен занять новый элемент управления (рис. 10.2).
4. Отпустите кнопку мыши.
В форме должен появиться новый элемент управления.
Рис. 10.2. Добавление элемента управления в форму
Обычно сразу же после добавления элемента управления в форму указатель мыши приобретает свой обычный вид, позволяющий выбирать объект. Если вам нужно добавить несколько элементов управления одного и того же типа, вместо одного щелчка на пиктограмме соответствующего элемента управления в панели элементов управления сделайте двойной щелчок. Чтобы закончить добавление элементов управления, щелкните на пиктограмме стрелки в панели элементов управления.
Формы и элементы управления VBA являются объектами, а поэтому имеют свойства, задающие вид и поведение форм и элементов управления на экране. Эти свойства, как и свойства любых других объектов в программе, можно проверить и изменить.
Но для объектов, о которых речь идет здесь, вам не нужно писать программный код самим. Редактор Visual Basic предлагает воспользоваться окном свойств, которое позволяет с легкостью управлять множеством важных характеристик форм и элементов управления, не программируя их. Правда, по мере усложнения ваших программ вам все чаще и чаще придется устанавливать значения свойств программно, но и тогда окно свойств останется лучшим выбором для установки начальных значений свойств форм и элементов управления в них.
Общий вид окна свойств показан на рис. 30.3. Если окно свойств на экране отсутствует, оно появится после выбора View=Properties Window из меню или нажатия <F4>.
Рис. 10.3. Окно свойств для формы VBA
Когда не ясно, что означает какое-либо свойство или как установить его значение, просто вызовите справку. Щелкните в поле свойства и нажмите <F1>, чтобы на экране появилось окно справки с текстом соответствующего раздела справки VBA.
Очень удобны следующие особенности окна свойств.