VBA для чайников - Стив Каммингс
Шрифт:
Интервал:
Закладка:
Один или несколько элементов управления можно удалить, не помещая их в буфер обмена, если нажать клавишу <Delete> или выбрать Edit=Delete. Обратите внимание на то, что нажатие клавиши <Backspace> в данном случае не работает.
Можно выделить группу элементов управления, а затем перемещать их, менять размеры, вырезать или применять иные команды форматирования как к одному целому. Очень удобно таким образом одновременно устанавливать одинаковые значения общим свойствам элементов управления.
Для выделения сразу нескольких элементов управления используйте следующие приемы.
* Щелкните на пиктограмме стрелки в панели Toolbox и, перетаскивая указатель мыши, охватите прямоугольником выделения те элементы управления, которые нужно включить в группу выделенных. Если в прямоугольник выделения попадет хотя бы часть элемента управления, этот элемент управления окажется в группе выделенных.
* Щелкните на первом элементе управления в группе, а затем, нажав и удерживая клавишу <Shift>, щелкните на элементе управления в противоположной части области выделения. В результате будут выделены все элементы управления, находящиеся между теми двумя, на которых вы щелкали.
* Щелкните на элементе управления, удерживая при этом нажатой клавишу <Ctrl>. Элемент управления будет добавлен к группе выделенных или будет исключен из нее в зависимости от того, был во время щелчка элемент управления выделен или нет.
Выделив группу элементов управления, можно перемещать их, менять размеры, вырезать или применять иные команды форматирования как к одному целому. Выделение группы элементов управления очень ускоряет работу, когда нужно установить одинаковые значения общим свойствам нескольких элементов управления.
Обычно можно отменить результаты последней команды форматирования с помощью команды Undo (Отмена), вызываемой нажатием клавиш <Ctrl+Z>. Однако отмена не действует после изменения размеров формы, а также для изменений, выполненных в окне свойств.
Сетка - это разметка из вертикальных и горизонтальных линий, "нанесенных" на формы. Сетка выполняет следующие функции.
* Визуализация направляющих, вдоль которых размешаются элементы управления с помощью мыши. Направляющие линии проходят через точки, на которые вы наверное, обратили внимание при работе с формами.
* Автоматическое выравнивание элементов управления по линиям сетки при перемещении или изменении размеров элементов управления с помощью мыши. Независимо от вашего желания, при перемещении (или изменении размеров) элементов управления с помощью мыши стороны элементов управления "прилипают" к линиям сетки. Хотя это и ограничивает вас в гибкости, зато обеспечивает заметную согласованность при разметке формы.
Эти две функции работают независимо. Можно, например, сделать сетку невидимой, но оставить в силе автоматическое выравнивание или наоборот.
Чтобы установить параметры сетки, выберите Tools= Options из меню. В появившемся диалоговом окне Options (Параметры) щелкните на вкладке General (Общие), чтобы добраться до элементов управления, с помощью которых задаются параметры, о которых идет речь (рис. 10.5).
Рис. /0.5. Шаг сетки задается на вкладке General в диалоговом окне Options
В верхней левой части этого диалогового окна вы найдете несколько параметров, относящихся к сетке.
* Show Grid (Показывать сетку). Снимите этот флажок, если хотите, чтобы точек сетки на форме не стало. Состояние этого параметра не влияет на автоматическое выравни1 вание по линиям сетки.
* Width (Ширина) и Height (Высота). С помощью значений в этих полях текста задается шаг (т.е. расстояние между точками) сетки в вертикальном и горизонтальном направлениях соответственно.
* Align Controls to Grid (Выравнивать элементы управления по линиям сетки). Когда этот флажок отмечен, работает функция "прилипания" к линиям сетки. Сняв этот флажок, вы получите полную свободу в позиционировании и изменении размеров элементов управления. И повторяю, сетка может оставаться видимой, когда функция автоматического выравнивания отключена.
Форматирование элементов управления
В большинстве своем люди питают склонность к таким неосязаемым свойствам, как симметрия, согласованность и аккуратность. И вы, я думаю, хотели бы помочь пользователю сосредоточиться на тех задачах, которые предстоит выполнить, а не собираетесь вызвать у него раздражение беспорядочным нагромождением элементов управления.
К счастью, в VBA есть все средства для создания хорошо организованных форм. Причем, хотя для этого все еще нужна некоторая ручная работа, средства автоматического форматирования VBA позволяют автоматизировать значительную часть процесса.
Команды, которые относятся к размещению и позиционированию элементов управления в форме, находятся в меню Format (Формат) редактора
Visual Basic (рис. 10.6). Хорошее предварительное знакомство с пунктами этого меню и его многочисленных подменю сослужит вам хорошую службу во время проектирования формы.
Использование панели инструментов UserForm
При работе с формами в редакторе Visual Basic очень удобной оказывается панель инструментов UserForm. Если эта панель инструментов на экране не видна, отобразите ее, щелкнув правой кнопкой мыши в любой из видимых панелей инструментов и выбрав UserForm в появившемся меню. На рис. 10.7 панель инструментов UserForm показана как свободно перемещаемая панель.
Рис. 10,7. Панель инструментов UserForm предлагает кнопки для часто используемых команд форматирований элементов управления
Кнопки панели инструментов UserForm соответствуют пунктам меню Format. Некоторые из этих кнопок комбинированные - справа от них видны небольшие направленные вниз стрелки, раскрывающиеся в списки опций. Если щелкнуть на главной части такой кнопки.
VBA немедленно активизирует опцию, выбранную последней. Чтобы выбрать другую опцию, щелкните на маленькой стрелке и выберите опцию из появившегося списка.
Выбрать с помощью мыши сразу несколько элементов управления просто, но этот метод оказывается не идеальным в том случае, когда приходится постоянно работать с одним и тем же набором элементов управления как с отдельной единицей. Объединив все эти элементы управления в группу, вы избавляетесь от необходимости выбирать все эти элементы управления каждый раз, когда приходится с ними что-то делать, и тем самым исключаете возможные при таком выборе ошибки. На рис. 10.8 показаны примеры сгруппированных наборов элементов управления.
Рис. 10.8. Несколько групп элементов управления. Обратите внимание, что прямоугольники выделения охватывают все элементы управления в группе
Создать группу несложно.
1. Выделите все элементы управления, которые должны войти в группу.
2. Щелкните на кнопке Group (Сгруппировать) панели инструментов UserForm или выберите Format=Group из меню.
Группировка позволяет применять команды форматирования сразу ко всем элементам группы одновременно. Например, если необходимо выровнять расстояния между тремя рядами кнопок, сгруппируйте кнопки по рядам, выделите все три образовавшиеся группы и выберите Horizontal Spacing=Make Equal из меню (подробнее об этом - ниже в разделе "Выравнивание горизонтальных и вертикальных расстояний").
Хотя лучше всего не перекрывать одни элементы управления другими, это бывает необходимым, когда содержимое формы должно меняться в процессе выполнения программы.
При этом, если правильно установить значения свойства Visible элементов управления, программа в каждый конкретный момент времени может оставлять невидимыми все перекрывающиеся элементы управления, кроме одного.
Но в окне редактора Visual Basic все элементы управления всегда видимы - разве что какой-нибудь из них полностью закрыт другими элементами управления в форме. Если такое случилось, используйте команды Order (Упорядочить) из меню Format, чтобы переупорядочить элементы управления.
Вот рекомендации по поводу использования команд Order.
* Если можно добраться хотя бы до небольшого кусочка спрятанного элемента управления, щелкните на нем, чтобы выделить его, а затем выберите Format=Order=Bring to Front (Формат= Упорядочить= На передний план), чтобы элемент управления оказался поверх других.
* Если нужный вам элемент управления полностью закрыт другими элементами управления, выделите самый верхний из них и отправьте его под все остальные, выбрав Format=Order=Send to Back (Формат=Упорядочить=На задний план). Повторяйте эту операцию до тех пор, пока нужный вам элемент управления не окажется наверху.
* Если вы специально разместили элементы управления так, чтобы во время выполнения программы они пересекались, используйте команды Format=Order=Bring Forward (Формат=Упорядочить=Переместить вперед) и Format=Order=Bring Backward (Формат=Упорядочить=Переместить назад), чтобы разместить пересекающиеся элементы управления так, как вам нужно. Эти команды перемещают элемент управления в стопке на одну позицию вперед или назад.