For1.BackColor = vbRed
Запустите проект. Появится новое окно сообщения:
Object required – требуется указать объект (элемент управления)
Это окно сообщения несколько отличается от других, которые мы уже видели. Нажмите клавишу <F1> на клавиатуре или щелкните мышью, подведя курсор к кнопке окна с надписью Help (Справка). Вы получите разъяснения о возможной ошибке, но при этом не будет никакой дополнительной визуальной информации (например, ‘подсветки' ошибочной записи) как в предыдущем случае. Чтобы точно узнать, на какой объект или элемент управления требуется обратить внимание (‘object reqired’), в окне сообщения есть дополнительная кнопка. Обычно, окно подобного вида, появляется, когда вы имеете дело с орфографической ошибкой при назначении имени для элемента управления в коде на BASIC. Visual Basic сделает попытку назначить свойству какое-либо значение, исходя из ранее упомянутого принципа ‘записи через точку' (‘dot notation’):
ControlName.PropertyName = Value
Но, Visual Basic не находит элемент управления с данным именем (в нашем случае, это For1). Как же все-таки узнать, где ошибка? Ключ к сей великой тайне и есть кнопка с надписью Debug в окне сообщения. Visual Basic выделяет ошибочную строку кода. Для того чтобы увидеть, как это происходит, нажмите на кнопку Debug, и тогда строка кода с ошибкой будет выделена. И вам остается только выяснить, в какой части имени формы находится орфографическая ошибка. К сожалению, Visual Basic пока не такой "умный", как хотелось бы, и не может сделать это за вас. А, если серьезно, то, когда вы щелкаете по кнопке Debug, Visual Basic переключается в еще один режим работы – break mode (режим прерывания, останова). До этого, вы уже знали, что в Visual Basic есть два режима – режим разработки (design) и режим выполнения (run) проекта. Для того чтобы выйти из режима прерывания и исправить ошибку в строке кода, необходимо остановить выполнение проекта, нажав на кнопку с квадратиком на панели инструментов.
Те ошибки, которые мы специально вводили в код проекта, являются тремя основными видами ошибок периода исполнения: орфографические ошибки при присваивании имени свойству, орфографические ошибки в самом имени свойства или другие ошибки, связанные, например, с пропуском оператора присваивания. Существуют и другие ошибки, которые будут часто возникать по мере усложнения ваших проектов. Но, Visual Basic, с большой пользой для дела отслеживает многие ошибки, имея мощную интерактивную справку, необходимую для подробных разъяснений по возникающим вопросам. И еще одно маленькое замечание по поводу ошибок периода исполнения. Visual Basic не в состоянии отследить все возникшие ошибки одновременно. Он остановит выполнение проекта, когда встретится первая из имеющихся ошибок. После устранения ошибки, можно снова запустить проект. Будет найдена следующая ошибка. Таким образом, вы сможете установить и исправить поочередно все ошибки периода исполнения.
Логические ошибки
Логические ошибки наиболее трудно поддаются обнаружению и устранению. Наличие этих ошибок не приводит к остановке после запуска проекта, но они, эти логические ошибки, есть в программе, если получен неожиданный или неправильный результат. Единственное, что вы можете сделать при подозрениях на наличие логических ошибок, так это внимательно проверить весь ваш проект (особенно, написание процедур обработки событий) и убедиться, что все строчки кода соответствуют задуманному. По большому счету, обнаружение логических ошибок – это, отнимающее много времени, искусство, а не наука. Не существует никаких, даже общих правил, для обнаружения логических ошибок. Каждый программист имеет свой собственный, индивидуальный путь поиска логических ошибок.
Если обратиться к нашему примеру с формой, то логическая ошибка возможна, например, когда в результате выполнения программы цвет формы изменился на голубой (Blue) цвет, хотя мы ожидали красный (Red). Самое логичное в этом случае обратиться к окну кода и посмотреть, из-за чего это произошло. И как вы, наверное, догадались, при присвоении цвета для формы, была использована символьная константа vbBlue, а не vbRed, как было задумано, но черт попутал. Введя в код соответствующие изменения, вы устраните логическую ошибку и, после запуска проекта, вызовите покраснение (Red) нашей формы.
К сожалению, устранение логических ошибок не всегда так легко дается, как в рассмотренном выше примере. Но и здесь есть выход из положения. В Visual Basic имеется такая вещь, которая называется debugger (дебаггер, отладчик, отлавливатель жуков) который поможет вам идентифицировать (распознать, сравнить с уже известными) логическую ошибку. Используя отладчик (его работу вы уже видели, когда мы рассматривали режим прерывания – break mode), вы можете назначать любые значения свойствам и останавливаться когда угодно и где угодно, строчку за строчкой выполняя ваш проект. Не расстраивайтесь, если вы не поняли, как работать с отладчиком. Это отдельная тема для достаточно продвинутых (advanced) учащихся и она не рассматривается в рамках данного обучающего курса. Но, если вы упорны в достижении цели и хотите улучшить мастерство в работе с Visual Basic, то самостоятельное изучение работы отладчика, безусловно, пойдет вам на пользу. За такой героизм на данном этапе вам можно поставить памятник…
А сейчас, давайте вернемся к нашим элементам управления в среде программирования Visual Basic. Далее мы рассмотрим два новых элемента управления: label (надпись, метка) и text box (текстовое окно или поле).
Элемент управления Label (Надпись)
Label (Надпись) – это элемент управления, применяемый для отображения информации, которую пользователь не может изменить непосредственно там, где она находится. Этот элемент управления часто используется, чтобы вывести заголовки и надписи на других элементах управления. Или, ещё, Label используется, чтобы отобразить результаты какой-либо операции, выполненной компьютером. Элемент управления label можно выбрать или активизировать из окна инструментов (toolbox). Он выглядит так:
В окне инструментов: На форме, по умолчанию (default):
Свойства
Несколько полезных свойств для элемента управления label:
Свойство Описание
Name (Имя) Имя используется для распознавания того или иного элемента управления. После имени ставится префикс из трех букв lbl.
Caption (Заголовок) Текст (строковый тип), который появляется в надписи.
Font (Шрифт) Устанавливает вид шрифта, его начертание и размер для заголовка (надписи).
Alignment Выравнивает текст заголовка по правому, левому краю или по центру.
BackColor Устанавливает цвет фона для надписи.
ForeColor Устанавливает цвет самой надписи.
BorderStyle Определяет тип границы, бордюра (border) вокруг надписи.
Left (Слева) Определяет расстояние от левого края формы до левого края надписи.
Top (Сверху) Определяет расстояние от верхнего края формы до верхнего края надписи.
Width (Ширина) Ширина надписи в твипах.
Height (Высота) Высота надписи в твипах.
Visible (Видимость) Определяет, видна или не видна надпись на форме (в режиме выполнения проекта).
Пример
Начните новый проект. Поместите элемент управления label (надпись) на форму. Измените, размеры надписи и переместите ее в удобное для просмотра место, например, в центр формы. Установите свойство Caption (Заголовок), т.е. введите какой-либо текст. Измените свойство Fonts (Шрифт). Попробуйте установить различные значения для свойства Alignment (Выравнивание). Вы, наверное, заметили, что изменение свойства Alignment воздействует только по горизонтали, вертикального выравнивания здесь нет. Теперь перейдем к свойству BorderStyle (Тип границы). Существует два возможных значения для его установки. Обратите внимание, что по умолчанию стоит значение 0-None (0 – без границы), что просто предполагает наличие надписи внутри формы, а вот другое значение свойства 1-Fixed Single (1 – фиксированная одинарная) дает нам границу для надписи в виде объемного, как бы утопленного, прямоугольника (действительно бассейн с бордюром – ‘border’). После этого измените свойства BackColor (Цвет фона для надписи) и ForeColor (Цвет самой надписи). При этом вы можете получить не совсем подходящие для отображения на экране монитора сочетания цветов. Текст надписи должен легко читаться любым пользователем, который будет работать с вашей программой.
Для элемента управления label наиболее часто употребляемое свойство, это – Caption (Заголовок). С помощью этого свойства можно задать информацию, которая будет отображена в элементе управления label. Здесь необходимо сделать два замечания. Во-первых, вы должны убедиться, что размеры элемента управления label соответствуют размеру заголовка, и весь текст виден полностью. Во-вторых, обратите внимание, что свойство Caption имеет строковый тип. Поэтому значения для него можно задавать только строковые. Когда вы устанавливаете свойство Caption в режиме выполнения (run mode), то информация, вводимая для этого свойства, должна быть в кавычках. Например, если у вас есть элемент управления с именем lblExample, и вы хотите установить для свойства Caption значение My Label Box, то, используя код на BASIC (запись через точку), можно записать:
lblExample.Caption = “My Label Box”
Вы можете не беспокоиться относительно кавычек при установке свойства Caption в режиме разработки (design mode). Visual Basic автоматически установит именно строковый тип значения свойства.
События
Одно событие представляет для нас интерес на данном этапе для элемента управления label:
Событие Описание
Click (Щелчок) Событие выполняется, когда пользователь щелкает по элементу управления label мышью.
Выполнение этого события позволяет пользователю выбирать различные установки для нескольких элементов управления label, находящихся на форме. Что можно сделать с помощью этого события? Например, сделать программу тестирования, где можно выбирать один из ответов на поставленный вопрос или изменить какой-либо цвет после щелчка.
Элемент управления Text Box (Текстовое поле)
Элемент управления text box (текстовое поле) представляет собой окно, которое можно поместить на форму в режиме разработки (design mode), а вводить текст в это окно пользователь может в режиме выполнения программы (run mode). Ввести текст можно также, используя процедуру обработки событий. Правильным будет и такое предположение: элемент управления text box это то же самое, что и label, только его содержание может изменять пользователь программы. Элемент управления text box можно выбрать из окна инструментов Visual Basic. Он выглядит так:
В окне инструментов: На форме (по умолчанию):
Свойства
Элемент управления text box имеет богатый набор полезных свойств:
Свойства Описание
Name (Имя) Имя используется для распознавания того или иного текстового поля. После имени текстового поля ставятся три буквы префикса txt.
Text (Текст) Текст (строковое значение), который находится в текстовом поле.
Font (Шрифт) Устанавливает вид шрифта, его начертание и размер.
Alignment (Выравнивание) Определяет положение текста: или слева, или справа, или по середине текстового поля (действует, только тогда, когда для свойства MultiLine установлено значение True).
MultiLine Определяет, как текст отображается в текстовом поле – в одну или несколько строк (multiple lines – в несколько строк).
ScrollBars Определяет вид полосы прокрутки.
MaxLength Максимальная длина (Maximum length), имеется ввиду максимальное количество отображаемых символов. Если установить 0, то количество символов без ограничений.
BackColor Устанавливает цвет фона для текстового поля.
ForeColor Устанавливает цвет вводимого текста.
BorderStyle Устанавливает тип границы для текстового поля.
Left (Слева) Расстояние от левого края формы до левого края текстового поля.
Top (Сверху) Расстояние от верхнего края формы до верхнего края текстового поля.
Width (Ширина) Ширина текстового поля в твипах.
Height (Высота) Высота текстового поля в твипах.
Locked (Блокировка) Если установлено значение True, то пользователь не может изменить текст в текстовом поле (только в режиме выполнения – run mode).
Visible (Видимость) Определяет, когда текстовое поле будет видимым или невидимым на форме (run mode).
Пример
Откройте новый проект в Visual Basic. Поместите элемент управления text box (текстовое поле) на форму. Измените, размер и переместите его так, как вам удобно. Введите какой-либо текст с помощью свойства text. Выберите понравившийся шрифт с помощью свойства font. Попробуйте установить различные значения для свойства alignment (выравнивание). Обратите внимание, что выравнивать текст по центру и по правому краю, вы можете только, если свойству MultiLine (многострочность) присвоено значение True (Истина). А теперь рассмотрим различия при установке значений для свойства BorderStyle (тип границы). Для этого свойства элемента управления label по умолчанию устанавливается значение None (Отсутствует), а для элемента управления text box устанавливается значение Fixed Single (фиксированная одинарная граница). Измените свойства BackColor (цвет фона) и ForeColor (цвет вводимого текста). Установите для свойства MultiLine (многострочность) значение True и поэкспериментируйте с различными значениями для свойства ScrollBars (полосы прокруток). Вы, конечно, поняли, что элемент управления text box очень легко приспособить для выполнения различных задач, и он хорошо размещается на форме.
Подобно свойству Caption (заголовок) для элемента управления label (надпись), свойство Text (текст) для элемента управления text box (текстовое поле) имеет строковое значение. Таким образом, когда вы устанавливаете свойство Text в режиме выполнения (run mode), вы должны заключать соответствующее значение в кавычки (“), чтобы присвоить этому значению необходимый тип. Установка свойства Text в режиме разработки (design mode) не требует применения кавычек и вам не надо заключать в них вводимые символы.
События
Наиболее важное свойство элемента управления text box – это свойство Text. Как программист, вы должны знать, когда и по какой команде это свойство изменит своё значение. Имеется два события, с помощью которых можно управлять значениями свойства Text:
Событие Описание
Change (Изменить) Событие выполняется, когда изменяется Text.
LostFocus (Потеря фокуса) Событие выполняется, когда пользователь заканчивает работу с текстовым полем и вызывает событие на другом элементе управления.
Событие Change (Изменить) выполняется всякий раз, когда пользователь вводит очередной символ в текстовое поле, нажимая клавишу на клавиатуре и вызывая при этом процедуру обработки событий Change. В зависимости от свойства Text процедура обработки событий устанавливает соответствующее значение.
Процедура LostFocus (Потеря фокуса) полезна для контроля за введенным текстом. Давайте вспомним, как при размещении элементов управления на форме в режиме разработки, мы можем сделать один из элементов управления ‘активным’, щелкнув по нему. Подобное происходит, когда программа находится в режиме выполнения. Пользователь может воздействовать только на один элемент управления за один раз. Так вот, если у пользователя имеется возможность воздействовать на элемент управления (вызывать событие), то говорят, что элемент управления имеет focus (фокус). Когда пользователь вводит с клавиатуры текст в текстовое поле, то фокус находится на этом поле. Событие LostFocus (Потеря фокуса) выполняется, когда фокус переходит с текущего на другой элемент управления. В этот момент мы знаем, что пользователь произвел ввод текста в текстовое поле и, соответственно, произвел изменение свойства Text. Поэтому процедура обработки событий, связанная с изменением фокуса, полезна для определения значения свойства Text.
BASIC – второй урок
В этом классе мы будем изучать некоторые новые понятия языка программирования BASIC. Мы будем рассматривать: как объявить (declaring) переменную, имена переменных и их типы. Мы рассмотрим арифметические операции, некоторые функции, а также способы работы со строками.
Переменные (Variables)
Все компьютерные программы обрабатывают информацию того или иного вида. Числа, текст, цвет, различные изображения – вот типичные виды информации, с которой работают программы. Компьютерным программам необходимо как-то сохранять информацию, с которой они работают. Мы уже знаем об одном способе сохранения информации в проектах Visual Basic, он заключается в использовании свойств элементов управления. Свойства элементов управления содержат в себе такую информацию как размер элементов управления, их внешний вид, положение на форме, и цвет элемента управления.
Но, свойств элементов управления недостаточно, чтобы сохранить всю информацию, в которой нуждается проект. А что, если нам необходимо будет узнать, сколько будут стоить десять бананов (для российских программистов – десять соленых огурцов), если каждый банан стоит 25 центов? Для этого нам необходимо будет где-то поместить информацию о числе бананов, о стоимости каждого банана и ещё необходимо где-то поместить результат перемножения этих двух чисел. Чтобы сохранить (записать в память) информацию, которую мы не можем описать с помощью свойств элементов управления, в проекте Visual Basic, мы используем так называемые переменные
(variables). Они называются так потому, что сохраненная в переменных информация может быть заменена или изменена в процессе выполнения программы. Использование переменных является основным способом управления информацией в проекте Visual Basic. При использовании переменных необходимо соблюдать некоторые правила (rules). Эти правила очень похожи на те, которые мы рассматривали для свойств элементов управления.
Имена переменных
Вы должны дать имя каждой переменной, используемой в вашем проекте. Правила для присвоения имени таковы:
· Имя должно содержать не более 40 символов.
· В имени можно использовать буквы, цифры и символ подчеркивания (_).
· На первом месте в имени должна стоять буква.
· Вы не можете использовать зарезервированные Visual Basic словосочетания (например, вы не можете дать переменной имя Form или Beep).
Наиболее важно при наименовании переменной – это придать имени определенный смысл, соответствующий предназначению переменной. Вы должны впоследствии (когда программа станет большой и сложной) в состоянии определить по имени переменной, заложенную в неё информацию. Например, в нашем опыте с покупкой бананов, наиболее полно отражающие суть переменных имена могли бы выглядеть так:
Описание Имя переменной
Стоимость каждого банана BananaCost
Количество купленных бананов Bananas
Стоимость всех бананов TotalBananaCost
Где Cost – стоимость, Total
– сумма, Banana
надеюсь переводить не надо.
Типы переменных
Нам нужно знать тип (type) информации хранимой в каждой переменной. Те же самые типы, которые мы использовали для свойств, могут применяться и к переменным: integer (целое), long integer (длинное целое), Boolean (Булевый тип) and string (строковый тип). Имеются также и другие типы – о них можно узнать в интерактивной справке, и не только узнать, но и использовать там, где это необходимо.
Здесь мы рассмотрим еще один тип информации, используемой для переменных: single (десятичное число с плавающей точкой). До сих пор во всех проектах, с которыми мы работали, использовались целые числа. Но мы знаем, что в математике есть и десятичные числа, (кто не знает, рекомендуем почитать учебник по математике). Тип single
– это число, имеющее точку, которая отделяет целую часть числа от его десятичной составляющей. В компьютерном языке есть такой термин floating point number (число с плавающей точкой). ‘Плавающая точка' на самом деле никуда не плавает (floating), а служит только для обозначения десятичной дроби. Примеры чисел типа single:
2.00 -1.2 3.14159
С переменными можно использовать оператор присваивания: