Чтение онлайн

на главную - закладки

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

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

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

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

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

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

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

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

Используйте свойства Мах и Min полосы прокрутки или кнопок со стрелками для определения диапазона доступных значений. Эти свойства могут принимать только целые значения.

Имейте в виду, что несмотря на свои названия, свойства Мах и Min относятся к расположению элемента управления, а не к числовым минимальным и максимальным значениям; значение свойства свойства Мах может быть меньше значения свойства Min. Свойство Min относится к кнопке со стрелкой вниз. (Я настоятельно рекомендую вам поэкспериментировать с этими элементами управления.)

Полосы прокрутки или кнопки со стрелками бесполезны до тех пор, пока пользователь не будет точно знать, какое же значение он выбрал. На рис. 19.11 приведено несколько примеров того, что пользователь видит, а также того, что он не должен видеть.

К сожалению, ни один элемент управления не создается со стандартным диапазоном значений.

Для того чтобы связать значение, выбранное с помощью полосы прокрутки или кнопок со стрелками, с другим элементом управления, таким как текстовое поле, вам придется немного попрограммировать. Чаще всего мы обойдемся добавлением всего одной строки кода. Приведенный ниже фрагмент кода передает значение, полученное с помощью полосы прокрутки sclWarpFactor подписи lblScroll Bar Readout, после щелчка на бегунке полосы прокрутки:

Private Sub sclWarpFactor_Click

lblScrollBarReadout.Caption = sclWarpFactor.Value

End Sub

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

Риc. 19.11. Диалоговое окно, показанное на рис. 19.10, претерпело некоторые улучшения

Дополнительно о программировании форм

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

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

Использование

переменных для ссылок на формы

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

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

Sub FormVariableDemo

Dim frml As FormAnOpinion

Set frml = FormAnOpinion

' Изменение свойств и вызов методов с помощью переменной:

With frml

.Caption = "Все указанное выше"

. Show

End With

End Sub

Строго говоря, оператор Set создает отдельную копию, или экземпляр, формы, присваивая его заданной вами переменной. Таким образом можно отображать несколько копий одной и той же формы, каждая из которых будет со своими собственными значениями в элементах управления. Для создания дополнительных экземпляров формы нужно использовать ключевое слово New. Вот как это выглядит:

' объявление переменных для форм

Dim frmOne As MultiForm

Dim frmTwo As MultiForm

' заполнение каждой переменной своим экземпляром формы

Set frmOne = MultiForm

Set frmTwo = New MultiForm ' Здесь используется New

' отображение двух экземпляров форм

frmOne . Show

frmTwo.Show

Распознавание нажатий клавиш

Используйте события KeyPress, KeyDown и KeyUp, чтобы отвечать на нажатия клавиш пользователем. Событие KeyPress удобно использовать для распознавания клавиш с обычными "печатаемыми" символами (буквы, числа, знаки пунктуации), когда нужно обработать информацию, вводимую в текстовое поле или в поле со списком. С помощью этого события распознаются также многие из комбинаций типа <Ctrl+клавиша>, а также клавиша <Backspace>. Немного позже я покажу, как проверить или изменить напечатанный символ с помощью процедуры обработки события KeyPress.

События KeyDown и KeyUp, напротив, распознают практически любую посылаемую им комбинацию клавиш, включая выкрутасы типа <Alt+Shift+Ctrl+F9>. С этими событиями работать труднее, чем с KeyPress, но зато они позволяют использовать более широкий набор сочетаний клавиш. Например, можно создать процедуру обработки события KeyDown, которая позволяет с помощью комбинаций <Ctrl+<-> и <Ctrl+->> соответственно уменьшать или увеличивать значение полосы прокрутки, например, на 10.

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

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

Private Sub txtSerial Number_KeyPress(ByVal KeyAscii _

Поделиться:
Популярные книги

Эпоха Опустошителя. Том I

Павлов Вел
1. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том I

Проблема майора Багирова

Майер Кристина
1. Спецназ
Любовные романы:
современные любовные романы
6.60
рейтинг книги
Проблема майора Багирова

Законы Рода. Том 13

Андрей Мельник
13. Граф Берестьев
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 13

Газлайтер. Том 15

Володин Григорий Григорьевич
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 15

О, Путник!

Арбеков Александр Анатольевич
1. Квинтет. Миры
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
О, Путник!

Прометей: каменный век

Рави Ивар
1. Прометей
Фантастика:
альтернативная история
6.82
рейтинг книги
Прометей: каменный век

Её (мой) ребенок

Рам Янка
Любовные романы:
современные любовные романы
6.91
рейтинг книги
Её (мой) ребенок

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Прометей: каменный век II

Рави Ивар
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Прометей: каменный век II

Цвет сверхдержавы - красный. Трилогия

Симонов Сергей
Цвет сверхдержавы - красный
Фантастика:
попаданцы
альтернативная история
8.06
рейтинг книги
Цвет сверхдержавы - красный. Трилогия

Болтливый мертвец

Фрай Макс
7. Лабиринты Ехо
Фантастика:
фэнтези
9.41
рейтинг книги
Болтливый мертвец

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Лишняя дочь

Nata Zzika
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Лишняя дочь