VBA для чайников - Стив Каммингс
Шрифт:
Интервал:
Закладка:
В действительности текстовое поле имеет как свойство Value, так и свойства Text. Оба эти свойства одинаковы для текстовых полей, однако многие другие элементы управления, такие как кнопки и полосы прокрутки, имеют только свойство Value, но не имеют свойства Text. Так как свойства Value и Text функционально одинаковы для текстовых полей, они равноценны. Я использую свойство Value только потому, что мне легче запомнить его параметры, а также потому, что многие другие элементы управления имеют это же свойство.
Для того чтобы обсудить использование свойства Value (или Text) на примерах, ознакомьтесь с разделами "Извлечение информации, введенной пользователем" и "Использование стандартных свойств элемента управления" ниже в настоящей главе.
Извлечение информации, введенной пользователем
Для того чтобы выяснить, какой текст ввел пользователь в текстовом поле, программа должна извлекать свойства Value или Text. Обычно вы должны назначить свойства для строковой переменной с оператором, как показано ниже:
strText BoxText = txtMessageFromUser.Value
После запуска программы переменная strText BoxText теперь содержит любой тип пользователя в текстовом поле, которое называется xt MessageFromUser.
Использование стандартных свойств элемента управления
Многие элементы управления обладают стандартными свойствами, к которым относится свойство Value.
В случае текстового поля вы не должны явно указывать, какое свойство используется - Value или Text - для настройки и извлечения содержимого текстового поля в коде VBA.
Поскольку свойство Value является стандартным свойством текстового поля, можно его пропустить. Следующая инструкция размещает сообщение в текстовом поле:
txtRUListening = "Do as I say!"
В данном примере в текстовом поле размешается текст, который пользователь ввел в строковой переменной:
strWhatHeard = txtSoundOffTextBox
Создание автоматически изменяющихся текстовых полей
Текстовые поля имеют те же свойства AutoSize, Wordwrap и Text Align, что и элементы управления. Работают они почти так же. Более подробная информация об этих свойствах содержится в разделе "Отправка сообщений с надписями" раньше в настоящей главе. Однако свойство Wordwrap работает только в текстовых полях, состоящих из нескольких строк, о чем я расскажу в главе 19, "Еще о VBA-формах".
Использование кнопок
Если вы хотите что-либо сделать, и сделать именно сейчас, проще всего нажать кнопку и получить немедленный результат. Кнопки создают ощущение власти над программой.
Стандартная кнопка представляет собой серый объект, на котором находится поясняющий текст, например OK, Cancel или Guess Again, Friend. Если простой текст оскорбляет ваш изысканный вкус, на кнопку можно поместить небольшое изображение. Для того чтобы сделать это, в окне Properties (Свойства) в поле свойства Picture щелкните на небольшой кнопке, на которой изображены три точки. Вы получите доступ к диалоговому окну, которое позволит указать файл с рисунком. На рис. 10.16 показаны различные кнопки.
Рис. 10.16. Кнопки могут быть различного размера, формы и формата. На двух кнопках, расположенных в нижнем левом углу, вместо текста находятся рисунки
К сожалению, кнопки ничего не будут делать, если о них ничего не сказано в программе. Щелчком на кнопке вызывается событие Click, однако вы должны написать код для того, чтобы сказать VBA, какое действие должно произойти, когда происходит событие.
Выбор стандартных кнопок
В основной части диалоговых окон нажатие клавиши <Enter> приводит к нажатию кнопки. Эта кнопка является стандартной кнопкой, так как именно она реагирует на нажатие клавиши <Enter>, за исключением случая, когда фокус переместился на другой элемент управления.
Для того чтобы назначить кнопку стандартной кнопкой в форме, установите значение свойства Default равным True. Конечно, в форме может быть только одна стандартная кнопка.
Если диалоговое окно позволяет изменить данные или параметры настройки, неплохо было бы предоставить пользователю возможность отмены внесенных изменений. По договоренности, кнопка, предназначенная для отмены сделанных изменения, называется Cancel (Отменить). Если вы не придерживаетесь принятых обозначений, можно назвать эту кнопку 'Never mind" или "Forget it". Независимо от того, что именно написано на данной кнопке, она предназначена для отмены предыдущих операций.
Также по договоренности, после нажатия клавиши <Esc> любое диалоговое окно закрывается, как будто пользователь щелкнул на кнопке, на которой написано Cancel (Отменить) (или что-либо другое). Если свойство кнопки Cancel равно True, это означает, что после нажатия клавиши <Esc> программа будет вести себя так, как будто вы щелкнули на кнопке Cancel (Отменить).
Если свойство Cancel равно True, это автоматически не означает, что после щелчка на кнопке диалоговое окно будет закрыто. Это связывает клавишу <Esc> с событием кнопки Click.
Рамка - это очень важный элемент форм VBA и представляет собой простой прямоугольник с заголовком в верхней части. В рамке можно разместить другие элементы управления.
Рамки служит для следующих двух целей.
* Для визуального выделения группы связанных элементов управления. Это помогает понять пользователю, что эти элементы управления связаны. Также рамки позволяют разделить большие формы на несколько участков (рис. 10.17).
* Для выделения группы кнопок, из которых пользователь должен выбрать только одну.
Рис. 10.17. В данной форме используется три различные рамки для упорядочения групп кнопок
В разделе "Выбор элемента с помощью переключателя", дальше в настоящей главе, я подробно рассматриваю использование рамок. В данном разделе я коснусь основ - использования рамок для организации всех типов элементов управления.
Как только вы добавите рамку в форму, размещение любых других элементов управления в рамке свяжет их и рамку. Теперь при перемещении рамки элементы управления переместятся вместе с ней. При этом они будут занимать те же места в рамке, что и раньше.
Добавить элемент управления в рамку можно следующим образом.
* Нарисовать новый элемент управления в рамке. Создание нового элемента управления происходит обычным образом. Для этого необходимо щелкнуть на соответствующем значке в панели инструментов и затем перетянуть его на то место в форме, на котором он будет находится. В нашем случае - в рамку.
* Переместить существующий элемент управления в рамку. Перетягивайте элемент управления с помощью мыши до тех пор, пока указатель мыши не окажется в рамке. Как только вы отпустите кнопку мыши, элемент управления окажется в рамке.
После того как вы разместите элемент управления в рамке, границы рамки станут выделенными, как будто выбран данный элемент управления (рис. 10.18).
Рис. 1018. После того как вы выберете элемент управления, связанный с рамкой, данная рамка тоже будет выглядеть выбранной
Для того чтобы разорвать связь между элементом управления и рамкой, достаточно просто перетянуть данный элемент управления в другое место формы. Как только указатель мыши окажется вне границ рамки, отпустите кнопку мыши. При этом связь между элементом управления и рамкой будет разорвана, а сам элемент управления окажется в другом месте.
Теперь оба объекта (форма и элемент управления) можно перемешать отдельно.
Выбор элемента с помощью переключателя
Как в жизни, так и в программном обеспечении, есть много взаимоисключающих вариантов. Покупая мороженое, вы выбираете либо с изюмом, либо с орехами, либо в фруктами, но никогда не все три сразу. Покупая платье или брюки, вы всегда покупаете только те вещи, которые подходят вам по размеру. А когда вы собираетесь жениться на Анне, о других претендентках вы не думаете (Анна должна этому радоваться!).
В Windows для изображения взаимно исключающих вариантов выбора используются так называемые переключатели. Это небольшие круглые кнопки, которые работают как нажимные кнопки на радиоприемниках в автомобилях. Одновременно можно слушать только одну радиостанцию. На рис. 10.19 показан типичный набор переключателей.
Рис. 10.19. Переключатели в действии
Переключателей всегда должно быть несколько, но выбрать можно только один из них. Если вы выберете один из переключателей, все остальные автоматически останутся не выбранными.
Не беспокойтесь о том, как создать группу переключателей. Все, что вам необходимо сделать, - это разместить кнопки в одном месте в форме. VBA автоматически объединит их в группу. При запуске программы будет выбран только один переключатель.
А что это за странные слова: переключатели должны быть размещены "в одном месте формы"? Конечно, это не официальная терминология VBA, но можно сказать следующее: одна часть формы является самой формой. Каждая добавленная вами рамка элемента управления создаст другую часть формы. И каждая вкладка элемента управления, состоящего из нескольких вкладок, также является отдельной частью формы (о элементах управления, состоящих из нескольких вкладок, которые создаются для ноутбуков и которые похожи на обычные диалоговые окна Windows, я расскажу в главе 19). Можно разместить рамку внутри другой рамки или на вкладке элемента управления, состоящего из нескольких вкладок. Каждая вложенная рамка занимает свою часть формы.