Азбука Visual Basic
Как вам, быть может, известно, программирование интерфейса в среде Windows некоторое время назад являлось весьма сложной задачей: надо было написать кучу строк кода (например, на С++), чтобы через час-другой трудов увидеть свое творение на экране, так что программы для Windows писали долго и не поодиночке. Visual Basic же позволяет это делать, как уверяют разработчики и энтузиасты, с отличной производительностью и непревзойденной легкостью.
В абсолютно вольном переводе название Visual Basic можно трактовать как "наглядная простота". Любой школьник теперь знает, что Basic относится к простейшим языкам для написания компьютерных программ. По обычным человеческим меркам он довольно древний, поскольку был создан аж в 1964 г. Его разработчики - Томас Курт и Джон Кемени - уже тогда хотели сделать его языком для начинающих, облегчающим написание несложных программ. И вот почти 30 лет спустя, в начале 90-х гг., их последователи из Microsoft сумели этой простоте придать легкий оттенок гениальности. Новая разновидность языка под названием Visual Basic позволяла начинающему программисту решать не только простейшие задачи, но и весьма сложные, которые ранее можно было осуществить только на серьезных и сложных языках типа C++. По сути дела, это была революция в способе создания приложений под Windows (рис. 1).
Рис. 1. Эта трехмерная сцена использует возможности Direct3D. А написана она на Visual Basic.
Действительно, в основу программного пакета было положено передовое архитектурное решение, позволяющее не писать, а проектировать программы, подобно инженеру-дизайнеру. Иначе говоря, в нем был одним из первых реализован популярный ныне стиль визуального программирования. И ключевым словом в названии языка является Visual - экранные формы и множество встроенных компонент (текстовые, графические окна, кнопки, диалоги и т. п.) избавляют вас от головной боли, связанной с выводом, обработкой, обновлением всех этих элементов. А слово Basic в названии указывает лишь на то, что синтаксис программ и операторы основаны на языке высокого уровня Basic (Beginners Altpurpose Symbolic Instruction Code). И если вы программировали с помощью какой-нибудь другой версии Basic (Qbasic или QuickBasic), вы скоро убедитесь, что они с Visual Basic во многом похожи (например, имена почти всех команд остались прежними, что, несомненно, очень удобно и предусмотрительно), но последний во многом отличается. В лучшую сторону, конечно.
Знакомые с языками программирования люди могут сказать, что почти все языки сейчас - Visual C++, Delphi и прочие - используют визуальный стиль программирования. Да, это так. Все языки теперь модифицировались, имеют приставку Visual, но все равно в плане программирования за ними стоят языки-прародители - С++, Паскаль и тот же Бейсик, который все мы помним еще со школьных времен. Однако вы вряд ли изучали или будете изучать в школе Паскаль или тем более С++, а если займетесь этим сами, то обнаружите, что они на порядок сложнее Basic. Раньше главным аргументом "серьезных" программистов было то, что на Бейсике ничего сложного написать было невозможно, - он даже не делал исполняемые файлы. С появлением Visual Basic эти же люди стали говорить, что он слишком медленный для создания игр и серьезных приложений, хотя реальные возможности воплотить их с помощью Бейсика уже появились. С выходом же DirectX 7.0 SDK, в который включена поддержка Visual Basic и есть специальные компоненты для работы с трехмерной графикой, звуком, устройствами ввода и т. п., аргументов у них, наверное, уже не найдется. Всеобщее признание Бейсика стало очевидным, хотя, на мой взгляд, писать на нем и раньше было совершенно не зазорно - просто кому что нравится. Кто начинал с С или Паскаля, возможно, просто привыкли к ним или не хотят переучиваться на что-то еще, а кто только делает первые шаги в программировании - у вас есть прекрасная возможность начать с несложного и многообещающего Visual Basic. Поверьте мне, вас наверняка поразит его простота. А если вам так не покажется, то тот же С++ вас попросту насмерть испугает.
Последняя версия программы в настоящее время - Visual Basic 6.0. Она доступна пользователям в составе комплекса Visual Studio или в виде отдельного продукта и была выпущена корпорацией Microsoft в 1998 г. С тех пор к Visual Studio, и в частности к Basic, было выпущено 3 обновления, которые исправляют ошибки и добавляют новые возможности (последнее из них именуется SP3). А в начале прошлого года вышла локализованная версия этого языка программирования, которая стоит на 30% дешевле англоязычного варианта, что должно радовать не только крупных разработчиков, но и глав более мелких проектов, жаждущих прорваться в мир программного обеспечения.
Microsoft предлагает 3 варианта пакета: Learning, Professional и Enterprise. Learning предназначен для начинающих и ориентирован на создание простых программ для домашнего пользования. Professional позволяет разрабатывать серьезные приложения для коммерческого применения (Web-приложения, базы данных, компоненты ActiveX и др.), а Enterprise (промышленная версия) помимо вышеуказанного включает в себя средства групповой разработки (которые, правда, по мнению многих, реализованы не очень удачно), систему обработки транзакций, много всего, связанного с базами данных, SQL и т. д. Впрочем, этим вам не стоит забивать голову, т. к. редакций Learning или Professional для начала вам точно будет достаточно (рис. 2).
Рис. 2. Программа VisData, написанная на Visual Basic и поставляемая с ним. Очень удобна и предназначена для оптимизации работы с базами данных.
Так каковы же возможности Visual Basic (или просто VB) на сегодняшний день? Очень многое: эффективная работа с базами данных, создание Web-приложений, программ для работы со звуком (например, известная программа для конвертирования треков аудио-CD в формат MP3 под названием MusicMatch Jukebox написана именно на Visual Basic), различных записных книжек и текстовых редакторов, а с выходом DirectX 7.0 наверняка и трехмерных игр, рассчитанных на 3D-ускорители. Не Quake 3, конечно, но свой "пинбол" со временем вы сможете написать. В общем, на VB можно сделать практически что угодно.
Пришло время собственно познакомиться с Visual Basic. Как и любая программа, он имеет свой интерфейс, на мой взгляд, весьма удобный. После запуска перед вами появится диалог ("всплывание" которого впоследствии можно отключить), предлагающий выбрать тип будущего проекта (рис. 3).
Рис. 3. Для начала можно ограничиться Standard EXE, т. к. этот вариант прекрасно подходит для решения большинства стандартных задач.
Вариант Standard EXE подойдет для решения большинства основных программистских задач, и не будем пока вникать в более сложные вещи. После выбора типа проекта (а начиная делать новую программу, вы всегда создаете новый проект - довольно удобный тип организации ваших файлов, но на этом мы остановимся позже) перед вами предстанет ваша будущая область творчества (рис. 4).
Рис.4. Типичный вид рабочего окна Visual Basic. Слева –панель компонентов, которые могут быть использованы в проекте.
Посередине находится текущая форма - экран вашей будущей программы. Он может быть любого размера по вашему усмотрению. Растягивается форма мышкой за края, или нужный размер указывается в соответствующих полях свойств формы.
Все объекты, задействованные в программе, имеют свои свойства. Свойства объектов могут быть самыми разнообразными - размер окна, цвет его фона, шрифт (его тип, размер, цвет). В свойствах также указывается, доступен объект только для чтения или нет, какая у него рамка и т. п.
Окно свойств в нашем случае находится в правом нижнем углу экрана, но вы можете расположить его там, где вам кажется удобным. При выборе какого-либо объекта в нем автоматически отображаются его свойства. Впрочем, базовые объекты Visual Basic - это в основном уже готовые элементы интерфейса, которые вы можете смело применять в своих программах. Панель компонентов на рисунке изображена слева.
Компонентов, вообще говоря, может быть бесчисленное множество. Многие поставляются с Visual Basic (количество и виды зависят от типов пакетов, о которых я рассказал выше), еще больше изготовляется другими компаниями (вы можете найти их в Internet), и, кроме того, вы можете создавать свои собственные компоненты. Основные компоненты Visual Basic | | Указатель для выбора активного объекта. Больше ничего и не делает. | | Графическое окно — выводит графические изображения. | | Метка — выводит текст. Главное замечательное свойство в том, что текст можно делать на прозрачном фоне. | | Текстовое окно — позволяет вводить, выводить и редактировать текст. | | Рамка — объект группировки для улучшения визуального восприятия. | | Командная кнопка — незаменимая вещь, осуществляющая выполнение возложенных на нее программных функций. Например, выход из программы. | | Индикатор — индикация ввода/выбора одной из двух альтернатив. | | Кнопка-переключатель — позволяет сделать выбор из одного или нескольких указанных элементов. | | Комбинированное окно — выбор элементов из списка или ввод новых. | | Окно списка — просто выбор элемента из списка. | | Полосы прокрутки — горизонтальная и вертикальная соответственно. | | Таймер — привязывание различных операций ко времени. Очень полезная вещь. | | Окно выбора диска — вроде и так все понятно. | | Окно списка каталогов — аналогично, только работаем с жестким диском. | | Окно списка файлов — выводит список файлов в выбранном каталоге и позволяет пользователю сделать выбор. | | Геометрические фигуры — для облагораживания своей программы и не только. | | Линия — рисуем линии. | | Картинка — выводит графическое изображение (в том числе весьма популярные файлы формата JPEG). | | Данные — осуществляет связь с файлами баз данных. | | Контейнер OLE — для связи с другими приложениями и вызова их из программы. | | Windows Media Player — родной проигрыватель от Microsoft, воспроизводящий все, что угодно. И делает это без проблем в вашей программе, причем с возможностью настройки интерфейса и прочее. | | Окно списка данных — позволяет получить доступ к элементам базы данных. | | Комбинированное окно данных — то же самое, только с возможностью введения новых значений. | | Решетка отображения базы данных — позволяет отображать содержимое базы данных, указывать количество столбцов и т. п. | | Усовершенствованное текстовое окно — различные возможности по форматированию текста (работает с файлами RTF). | | Полоса процесса — отображает текущее изменение величины. | | Ползунок — ввод чисел в заданном диапазоне. | |
В таблице вы видите основные компоненты Visual Basic с описаниями, которые пригодятся вам в работе. Возможно, каких-то компонентов среди них не будет - не пугайтесь, их просто надо добавить через меню Project/Components (рис. 5).
Рис. 5. Если компонентов, имеющихся на стандартной панели, вам будет недостаточно для решения той или иной задачи, то перед вами целый список дополнительных.
Из других интересных пользовательских компонентов можно отметить, например, календарь (причем несколько видов, очень симпатичных, кстати сказать) или компонент для вывода на экран "спрайтовой" анимации.
Впрочем, вернемся к описанию интерфейса программы. В правом верхнем углу находится так называемое окно проекта (Project). Там отображаются его название и структура, а также объекты, которые имеются в проекте, - формы, модули, классы и т. п. В нем же очень удобно перейти к нужной форме, если у вас их несколько и одну за другой не видно. Кроме того, нажатием на соответствующую кнопку на панели окна Project можно переключаться между просмотром самой формы либо ее программного кода. Перейти к программированию также можно, дважды кликнув на нужном объекте формы или на самой форме. Кстати, в появившемся окне будет присутствовать код всех объектов, расположенных на форме, а двойной клик на каком-либо объекте перенесет вас как раз в ту часть листинга, который описывает поведение данного объекта. Так что при нажатии будьте внимательны, особенно когда форма перегружена объектами, что, увы, бывает довольно часто (рис. 6).
Рис. 6. Это окно добавления Мастеров, облегчающих создание приложений. Попасть в него можно путем выбора опции Manager в меню Add-Ins.
Далее, по идее, стоит уже переходить собственно к основам программирования на Basic, но объем соответствующих книг измеряется сотнями страниц, так что немыслимо пытаться "объять необъятное" в пределах одной статьи. Однако без практического примера понять, в чем собственно простота Visual Basic, несколько сложно, не говоря уже о том, чтобы чему-то научиться. Таким образом, я предлагаю рассмотреть работу в среде Visual Basic на конкретном примере, и, быть может, идея вам настолько понравится, что продолжение уроков в последующих номерах ПЛ станет настоящей путеводной звездой вашего программистского таланта.
Многие из нас любят фотографировать, кто-то помещает снимки своих друзей и родственников на Рабочий стол, еще у кого-нибудь на жестком диске хранится подборка красивых пейзажей и т. п. Конечно, можно любоваться ими с помощью соответствующей программы для просмотра графических изображений типа ACDSee, но, согласитесь, приятнее сделать этот просмотр более информативным и отвечающим вашим вкусам. Конечно, есть программы для создания домашних фотоальбомов, но что-то в них может вас не удовлетворять, какая-то мелочь или неудобный интерфейс. Вы уже, наверное, поняли, к чему это я: почему бы не написать свою собственную подобную программу? И если вам пока еще кажется, что это сложно, тогда вы тем более почувствуете удобство и простоту Visual Basic при создании таких вещей.
Начнем с простого, а когда вы поймете основные принципы, вы сможете усовершенствовать программу, а также создавать любые другие.
Язык, каким бы простым он ни был, для серьезной и плодотворной работы все равно надо изучать довольно долго, и одной статьей тут не обойдешься - имеет смысл приобрести хорошую большую книгу (благо, сейчас их много) и заняться изучением тонкостей и хитростей программирования.
Пример. Создание фотоальбома
Создание любой программы надо начинать с проектирования, дизайна ее внешнего вида, интерфейса. Для начала ограничимся двумя экранами (формами), один из которых будет что-то вроде Главного меню, а на второй будут выводиться графические изображения с комментариями. Кроме Visual Basic, для создания этого приложения нам понадобится сделать маленькую базу данных (например, в Excel) примерно следующего вида (рис. 7).
Рис. 7. Открываем Excel и делаем такую вот небольшую табличку. Именно она послужит нам базой данных для проекта Visual Basic.
Столбец А - это имена ваших графических файлов, а В - комментарии к ним. Теперь запустим Visual Basic и выберем проект Standard EXE. Перед вами появится чистая форма. Давайте попробуем изобразить что-то похожее на рис. 8.
Рис. 8. Это шаблон графического интерфейса нашей программы. Пока невразумительно, но наберемся терпения...
Начнем с самой формы. Сначала, удерживая мышкой край формы, доводим ее до желаемого размера путем растяжения или сжатия объекта. Затем находим в окне свойств формы (не забыли, где оно находится?) строку BorderStyle - это обрамление окна формы. Лучше поставить туда значение FixedSingle - в этом случае будущий пользователь не сможет изменять размер окна, но если вас это не устраивает, можете поэкспериментировать с другими вариантами. Далее в поле Caption указывается название шапки окна. Вместо незвучного Form1 давайте введем "Мой фотоальбом" или то, что вам нравится. В поле Icon вы можете выбрать иконку по своему вкусу, если вас не устраивает стандартная, - с Visual Basic поставляется большая коллекция всевозможных иконок. Кроме того, полезно будет познакомиться с таким свойством формы, как StartUpPosition, - оно отвечает за расположение формы на экране в момент вызова. Лично я предпочитаю выставлять здесь значение CenterScreen - тогда окно вашей программы всегда будет выводиться точно посередине экрана. У формы есть еще много свойств, но останавливаться на них мы сейчас не будем, т. к. для нашей программы они не столь важны. Давайте лучше перейдем к созданию средств управления - кнопок, которые позволят вам общаться с программой, а не смотреть на пустой серый экран.
Выберите в палитре компонентов элемент CommandButton и нарисуйте на своей форме две кнопки произвольного размера. На них будет написано Command1 и Command2 соответственно. Давайте подправим эту надпись, дабы придать ей конкретный смысл. Как и форма, компонент CommandButton или просто "Кнопка" имеет поле Caption, в котором вы указываете то, что будет на ней написано. Давайте напишем на одной "Посмотреть", а на второй - "Выход". Тут имеет смысл украсить надпись витиеватым шрифтом или хотя бы изменить его размер, потому что, если вы создали довольно большие кнопки, надпись на них, выводимая, кстати, по умолчанию 10-м кеглем, окажется очень маленькой. Сделать это можно, вызвав из строки Font в свойствах объекта CommandButtion окошко со шрифтами и доступными для них настройками. В завершении давайте создадим заголовочную надпись на нашем экране с помощью компонента Label ("Метка"). Наша надпись вполне может быть прозрачной. Использовать это свойство особенно удобно, когда вы накладываете ее, скажем, на картинку или другой цветовой фон и не хотите, чтобы поверх изображения у вас красовался текст в прямоугольнике другого цвета. Процесс создания надписи практически аналогичен созданию кнопки: так же рисуем прямоугольник нужного размера, вводим надпись и выбираем шрифт - все в полях с такими же названиями, как и раньше, достаточно запомнить их один раз. Новым будет свойство BackStyle, которое надо установить Transparent, если вы хотите, чтобы надпись была на прозрачном фоне. Можете также поменять цвет шрифта в строке свойства ForeColor.
Пока весьма просто, не так ли? Если вы в точности следовали изложенному выше, то у вас должно было получиться что-то вроде рис. 9.
Рис. 9. Вот это уже похоже на прототип достаточно симпатичной программы. Теперь дело за программированием.
Теперь давайте перейдем к созданию второго окна, а собственно программированием, как самым страшным и неприятным, мы займемся в конце. Выберите в меню Project опцию AddForm, а в открывшемся диалоге просто Form, и перед вами появится ваша первоначальная пустая форма, только уже с названием Form2. Попробуем сделать из нее вот такой шаблон (рис. 10).
Рис. 10. Придав этой форме соответствующий вид, по окончании программирования мы будем просматривать в ней картинки.
Для начала проделайте с этой формой все те же операции, что мы делали с первой, - подберите размер (не забывая о размерах и форме ваших фотографий или других картинок - ведь именно они будут отображаться в нашей форме!), назовите ее, выберите позицию на экране. Создайте поле Label (в нем будут выводиться комментарии) и кнопку под названием "Назад", предназначенную для возврата на главную форму. Действия здесь совершенно аналогичны.
Дальше нам предстоит познакомиться с новыми полезными компонентами, и начнем мы с главного в нашей программе - Image (графическое изображение). Выберите его из палитры компонентов и нарисуйте на форме окошко желаемого размера. Оно будет выделено пунктирной линией, как показано на рисунке 6. В свойствах компонента найдите строку Stretch и поставьте значение True, чтобы размер картинки подстраивался под размер поля Image. Теперь ввиду того, что у нас в программе будет использоваться база данных, нам необходимо создать объект для работы с ней. Он называется Data - найдите его в панели компонентов и нарисуйте на своей форме что-то типа полосы прокрутки, как показано все на том же рисунке 6. В этой полосе по умолчанию будет написано Data1. Поменяем надпись на "Пролистывание фотографий" или что-нибудь в этом роде.
Далее нам нужно создать объект "Текстовое окно" (компонент TextBox) для доступа к имени файла картинки в нашей базе данных. Это не единственный способ обеспечить работу с базой данных, но он представляется весьма простым и наглядным. Теперь надо связать между собой компоненты Data, TextBox и Label. Начнем с инициализации объекта Data: в поле Connect выберите приложение, с помощью которого вы создали базу данных (в нашем случае Excel), затем в поле DatabaseName выберите в открывшемся диалоге соответствующий файл. Необходимо отметить, что к базе данных теперь всегда будет прописан именно этот путь. Конечно, существуют способы нормальной организации расположения ваших программных файлов, например, когда база данных или картинки будут находиться в директории, заданной пользователем. Но это приводит к увеличению кода и усложнению программы, чем мы сейчас заниматься не будем.
Теперь перейдем к TextBox. В поле DataSourse выбираем Data1, далее в поле DataField - имя колонки, которое вы задали в базе данных для имен файлов картинок (в нашем случае оно называется FILE). Затем установите свойство Visible в состояние False, чтобы это название не было видно при работе программы. И, наконец, проделаем первые две операции с объектом Label, не трогая свойство Visible. Как и ранее, можете поменять свойство BackStyle на Transparent.
Перейдем теперь к процессу программирования. Вернемся к первой форме и два раза кликнем на кнопке "Выход". Перед вами появится окно кода, в котором вам надо написать всего одно слово - End (рис. 11).
Рис. 11. Вот таким образом программируется завершение работы программы. Но не обольщайтесь: без более сложных вещей не обойтись.
По этой команде происходит завершение работы программы. Теперь запрограммируем кнопку "Посмотреть". Перейдите в окно кода и напишите следующие строки:
Form2.Show ' загрузить вторую форму
Form1.Hide ' скрыть первую форму с экрана
В окне кода у вас после этих манипуляций должно быть следующее:
Private Sub Command1_Click()
Form2.Show
Form1.Hide
End Sub
Private Sub Command2_Click()
End
End Sub
Далее в окне проекта выберем вторую форму. Программирование кнопки "Назад" аналогично программированию кнопки "Посмотреть", с той лишь разницей, что надо написать:
Form1.Show
Form2.Hide
Затем в левом верхнем углу окна выберите в ниспадающем меню объект Data1, а в аналогичном меню справа - событие Reposition. Дальше пишем следующий программный код:
Image1.Picture = LoadPicture(Text1.Text)
Потом аналогично выбираем объект Form в том же меню и присваиваем ему событие Initialize, затем пишем точно такую же строку:
Image1.Picture = LoadPicture(Text1.Text)
Вот, в принципе, и все. Впрочем, есть одно "но": если вы хотите запустить получившуюся программу из среды Visual Basic, она будет искать графические файлы в директории инсталляции VB. А если вы хотите, чтобы проект стал полноценным EXE-файлом, проще поступить следующим образом: в меню File выбрать опцию Make Project1.exe - перед вами появится диалоговое окно записи файла, где надо указать название будущего исполняемого файла. Теперь достаточно сохранить его в одной директории с вашими картинками. Все, программа готова. Запустив ее и перейдя ко второй форме нажатием кнопки "Посмотреть", вы увидите вот такое замечательное окно (рис. 12).
Рис. 12. Вот так, собственными руками вы сотворили симпатичную программу для просмотра графических файлов. Неплохо для начала, не правда ли?
Вместе с Visual Basic поставляется утилита для простого создания программы установки. Она автоматически делает архивы CAB и включает в них вашу программу вместе с используемыми ею библиотеками, что снимает вопрос о возможной нехватке последних на другом компьютере. Однако, несмотря на кажущуюся простоту и удобство, программа эта часто дает сбои, как правило, после доработки проекта и перекомпиляции его этой установочной программой. Впрочем, будем надеяться, что Microsoft решит эту проблему в ближайшем будущем.
Итак, пока вы узнали только самые общие сведения о Visual Basic, которые, по крайней мере, дают возможность составить представление о нем. А дальше все будет зависеть не столько от вашего интереса, сколько от того, какая практическая задача встанет перед вами при работе в Windows или какая идея посетит вас в часы досуга. В следующем номере ПЛ мы продолжим изучение возможностей Visual Basic и создадим еще более красивую программу. До встречи!