Visual Basic 5: Заглянем в инструментальные окна

Об авторе

Заглянем в инструментальные окна

В этой главе мы узнаем, как запустить систему программирования Visual Basic 5, и познакомимся с некоторыми окнами ее среды разработки – окном экранной формы, Проводником проекта и окном редактора кода. Научимся добавлять к проекту новые экранные формы и удалять их. Создадим простую программу и запустим ее. Узнаем, как выглядит на практике событийное управление.

Поехали!

Именно так приветствовал свой запуск первый космонавт Земли Юрий Гагарин. “Поехали! – повторим мы, входя в главное меню системы Windows 9x и щелкая указателем мыши по конечному пункту в пути по открываемым спискам программных групп: Пуск=>Программы=>Microsoft Visual Basic 5.0=>Visual Basic 5.0. Программа запустится, и мы получим следующую картинку (рис. 1):

рис. 1

Будем привыкать с самого начала быстро анализировать, какие элементы управления имеются в вызываемых диалогах. Итак, в диалоге New Project имеются 3 вкладки: New (Новый), Existing (Существующий) и Recent (Недавний). Вкладка New ­всегда при вызове данного диалога лежит поверх остальных, и всегда среди имеющихся на ней значков выделен цветом значок с надписью Standard Exe. Это означает, что по умолчанию (то есть без нашей инициативы) нам предлагается начать новый проект обычного приложения Windows (именно так требует фирма Microsoft называть программы, созданные для работы в системе Windows 9x). То есть предлагается режим создания нового приложения.

Что еще мы видим на этой вкладке? Сброшенный флажок Don’t show this dialog in the future (“Не показывать этот диалог в дальнейшем”). Если этот флажок установить (щелчком мыши), то при следующем запуске системы VB5 мы сразу окажемся в режиме создания нового приложения. Но мы не будем устанавливать этот флажок, а то что нам делать, если мы передумаем и захотим снова видеть этот диалог после запуска? Как нам узнать, что для этого надо включить переключатель Prompt (Запрос) в диалоге, открываемом следующей последовательностью команд: Tools=>Options=>Enviroument.

А теперь щелкнем по кнопке Открыть вкладки New. И перед нами открывается интегрированная среда разработки (или, на “родном” языке программистов – IDE). Возможно, не в точности такая, как на приведенном рисунке 2:


Рис. 2

но очень похожая.

Давайте ее изучим.

Главное окно IDE

Главное окно имеет в своей верхней части три строки, а все остальное в нем – рабочая область, на которой могут располагаться инструментальные окна (они сейчас там и располагаются).

Верхняястрока главного окна – строка заголовка. В ней указывается имя проекта (по умолчанию оно Project1), имя программной среды (Microsoft Visual Basic) и текущее состояние (design – проектирование) создаваемого в IDE приложения. Вы думаете, что никакого приложения еще нет? Вы глубоко ошибаетесь! Приложение уже существует и мы его сейчас запустим. Как? Запуск – это на языке программистов команда Run. Легко находим эту команду в главном меню, – его как раз и представляет вторая строка главного окна IDE. По этой команде откроется подчиненное меню со списком команд, две из которых доступны в данный момент (имеют нормальную яркость), а остальные – нет (рис. 3):


Рис. 3

Прежде чем выполнить первую же из них – команду Start, – обратим внимание, что левее слова Start изображена вот такая кнопка: . Это означает, что команду Start можно выполнять также при помощи щелчка по такой кнопке. Где ее найти? Она располагается среди прочих кнопок на стандартной панели инструментов – в третьей строке главного окна. А правее слова Start указана функциональная клавиша F5. Это значит, что команду Start можно выполнить и при помощи нажатия на эту клавишу. Когда одно и то же действие можно сделать разными способами, говорят, что имеются альтернативные способы выполнения данного действия. Теперь при изучении команд главного меню вы должны сами обращать внимание на все альтернативные способы их выполнения!

Итак, выполним команду Start (полное имя таких, находящихся в подчиненных меню команд мы будем писать по образцу: Run=>Start). И вот что получаем (рис. 4):

рис. 4

Мы видим активное (признаки активности: яркая строка заголовка; расположено поверх остальных) окно приложения с именем Form1. А в заголовке главного окна IDE произошло изменение: состояние design проектируемого приложения сменилось на run (исполнение). То, что активное окно – это именно окно приложения, можно определить по появившемуся значку с тем же именем на панели задач системы.

Да, наше приложение пока ничего не выполняет, но... Мы, например, можем закрыть его окно всеми стандартными способами, например, клавишной комбинацией быстрого реагирования (Shortcuts) Alt+F4. Что мы и сделаем.

Окно экранной формы

Это экно имеет в своем заголовке название проекта (Project1) и название размещенной в этом окне экранной формы (Form1). Экранная форма – это “заготовка” будущего окна проектируемого приложения. Как при запуске эта заготовка превращается в окно приложения – мы уже видели. Заметим, что если окно экранной формы максимизировать (распахнуть), то оно сольется с главным окном так, что название экранной формы дополнит заголовок главного окна. Не пугайтесь, это ничему не мешает и ни на что не влияет.

Надо сказать, что будущее приложение может располагаться в нескольких окнах, используемых для различных целей. Например, в одном окне размещаются элементы управления, с помощью которых задается уровень игрока, его имя, другие параметры игры, а в другом – игровое поле. Значит нам может понадобиться добавлять к проекту новые окна экранных форм командой Project=>Add Form. Вот что при этом получается (рис. 5):

рис. 5

Мы видим, что помимо появления на экране второго окна экранной формы (имя которой по умолчанию Form2), изменилось содержание и ряда других инструментальных окон. На дереве Проводника проекта (Project), например, появилась новая “веточка” Form2.frm. Это файл второй, только что созданной экранной формы. В заголовке окна свойств (Properties) и в его раскрывающемся списке объектов появилось имя Form2.

С окном свойств мы и познакомимся сейчас поближе.

Окно свойств

Окно свойств (рис. 6) служит для настройки свойств объектов – элементов управления приложения на этапе его проектирования:

рис. 6

В окне свойств всегда присутствуют два списка. Один, раскрывающийся, расположен сверху. Это список всех элементов управления, относящихся к той экранной форме, окно которой активно в данный момент (если в нашем проекте их несколько). Пока мы еще не размещали элементы управления на форме, в этом списке только один пункт – имя формы активного окна. Второй, “незакрывающийся” список (его называют “простой”) – это список свойств выбранного в верхнем списке элемента управления. Например, на нашем рисунке отображен список свойств экранной формы Form1.

Заметим, что список свойств всегда предстает перед нами размещенным на одной из двух имеющихся в окне вкладок. При этом состав списка не зависит от того, на какой из вкладок он отображается; меняется только порядок следования элементов списка. Верхняя вкладка называется Alphabetic (Алфавитный): список свойств на ней упорядочен по алфавиту. Другую же вкладку – Categorized (По категориям) – выбирают обычно для того, чтобы при настройке свойств видеть рядом сразу все свойства, близкие по смыслу: геометрические размеры, например.

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

Чтобы изменить значение свойства, необходимо выбрать щелчком мыши его строку. После этого, у некоторых свойств в поле значения может появиться кнопка, похожая на кнопки раскрывающихся списков:. Это означает, что значение свойства можно выбирать только из списка, который действительно откроется после щелчка по этой кнопке. Есть и такие свойства, у которых в поле значения появляется не кнопка списка, а кнопка вызова диалога:, с помощью которого и будет создано значение свойства. Ну, а у тех свойств, после выбора которых никакая кнопка не появилась, значение свойства меняют обычными средствами редактирования текста, установив щелчком мыши текстовый курсор в поле значения.

А как нам узнать, что означает то или иное свойство? После его выбора, в сером поле под списком свойств появляется его краткое описание. Для более подробной справки есть средства, о которых мы узнаем позднее. А пока учите английский!

Проводник проекта

На первый взгляд это окно малоинтересное (рис. 7):

рис. 7

В нем отображается дерево проекта (или проектной группы, в которую могут объединяться проекты). На дереве – “веточки” – имена файлов, входящих в проект. Файлы проектов имеют расширение .VBP, файлы экранных форм – .FRM. Потом мы узнаем и о других файлах, могущих входить в состав проекта.

Но нам сейчас важно не это.

Окно проекта для нас – прямо как волшебная дверца за нарисованным очагом в каморке папы Карло.

Причем роль замочной скважины в ней выполняет пара кнопок под строкой заголовка ­– левая и средняя (а правая  – просто для комплекта). Если поочередно подводить к ним указатель мыши, то можно прочесть их названия: левая называется View Code (Просмотр кода), а центральная – View Object (Просмотр объекта). Куда же ведет эта дверца?

Дело в том, что у окна каждой экранной формы есть как бы “изнанка” – окно редактора кода. В нем создается и редактируется код модуля экранной формы. Что входит в состав этого модуля? Прежде всего – обработчики событий. Мы создадим один такой обработчик прямо в этой главе! А пока научимся переходить из окна формы – в окно ее кода и обратно. Это просто:

•  проверяем, что на дереве Проводника проекта выделена блеклым или ярким цветом именно “веточка” с именем интересующей нас формы; если нет, то выделяем ее щелчком мыши;

•  щелкаем по кнопке View Code и работаем в редакторе кода;

•  для возврата в окно экранной формы щелкаем по кнопке View Object Проводника проекта.

Прежде чем воспользоваться нашей “волшебной дверцей”, давайте удалим ненужную нам вторую экранную фому Form2. Если просто закрыть ее окно, то ничего не изменится: форма останется в проекте и на дереве Проводника проекта; закрытое окно этой формы мы сможем заново открыть двойным щелчком по ее “веточке” на этом дереве. Для удаления же выделенной на дереве Проводника проекта формы Form2 используется команда Project=>Remove=>Form2.frm. Но есть и другой способ, о котором всегда должны помнить пользователи системы Windows 9х: контекстное меню, вызываемое щелчком правой клавишей мыши по объекту, с которым мы хотим что-то сделать. В данном случае, щелкнув по файлу Form2.frm в Проводнике проекта, мы получаем следующий список команд (рис. 8):

рис. 8

В нем мы и выберем команду Remove Form2.

Окно редактора кода

Итак, выделим в Проводнике проекта файл Form1.frm и с помощью кнопки View Code откроем “волшебную дверцу”. За ней окажется окно редактора кода. Распахнем его (рис. 9):

рис. 9

Мы видим в окне белый “лист бумаги”: кода нет (пока). Над “листом” – два раскрывающихся списка. В левом списке выбран пункт General, а в правом – Declarations. Если открыть эти списки по очереди, то окажется, что в правом списке есть еще пункт Form, а в левом больше ничего нет. Выберем в левом списке пункт Form. И вдруг... (рис. 10):

рис. 10

Вот что произошло:

•  в правом списке появилось слово Load (Загрузка); если теперь открыть этот список, то в нем окажется еще множество пунктов (только не надо по ним пока щелкать!);

•  в рабочей области окна появилось две строки кода; в этом коде имеется составное имя Form_Load.

Код, появившися в окне редактора кода модуля экранной формы, – это и есть один из обработчиков событий. Он пока состоит только из “процедурных скобок”: оператора заголовка процедуры (Sub) и оператора завершения процедуры (End Sub). Между “процедурными скобками” должно располагаться тело процедуры – исполнимые операторы, выполняющие какие-либо действия, – но их пока нет.

Form_Load – это имя процедуры–обработчика, которое составлено, по правилам языка Visual Basic, из имени объекта и имени события, соединенных знаком подчеркивания. Правда, имя нашей формы – Form1, и обработчик должен был бы называться Form1_Load. Но поскольку в модуле экранной формы сама экранная форма всегда одна, фирма Microsoft решила сделать для нее исключение!

Событие Load (Загрузка) происходит тогда, когда экранная форма, хранящаяся в файле с расширением .FRM, загружается в оперативную память и отображается на эране. Понятно, что это самое “типичное” событие из тех, которые могут происходить с формой (такое же, как для человека – утреннее пробуждение). Именно поэтому интегрированная среда так услужливо преподнесла нам именно его обработчик. А вот, скажем, для командной кнопки был бы “по умолчанию” вызван обработчик ее события Click (Щелчок), поскольку кнопки используются, в основном, для щелчков.

Понятно, что событие Load можно использовать для начальной настройки свойств объектов – тех, например, которые невозможно настроить заранее на этапе проектирования.

Пусть, например, мы хотим, чтобы наше будущее приложение имело в строке заголовка текущую дату. За текст в строке заголовка окна приложения отвечает свойство Caption (Заголовок) формы. По умолчанию, значение этого свойства совпадает со значением по умолчанию имени формы, то есть со значением свойства Name. В нашем проекте оба эти значения пока Form1. Поместим внутрь обработчика Form_Load “тело”, состоящее из одной строки кода:

Private Sub Form_Load()

Caption = Caption & "" & Date

End Sub

В этой строке, в переводе на русский, записано следующее: “Новое значение свойства Caption равно его старому значению, к которому “подклеена” сначала символьная строка из трех пробелов, а потом еще строка символов, составляющих значение текущей даты, возвращаемой стандартной функцией Date” (“стандартная функция” – это просто разновидность процедуры, входящая в состав IDE).

Запустив снова наше приложение (рис. 11):

рис. 11

Работает! На радостях добавим в данный обработчик (то есть к его телу) еще одну, вот такую строку кода:

Beep

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

Из основных инструментальных окон нам осталось рассмотреть только два: Form Layout (Выставка форм) и Палитру элементов (ToolBox).

Окно Form Layout используется в практических целях так редко, что лучше мы его закроем, чтобы зря не занимало место на экране. Но если нас кто-нибудь спросит, для чего оно? – мы бодро ответим: для задания положения экранных форм при их начальной загрузке на этапе выполнения приложения... А вот с Палитрой элементов нам придется поработать.