Прежде чем начать кодировать
Наиболее важной (и часто упускаемой из виду) частью создания приложения на Visual Basic является этап проектирования. Необходимость разработки пользовательского интерфейса приложения очевидна; необходимость структурировать код менее очевидна. Различные методы создания приложений могут привести к различиям в производительности приложений, а также в удобстве сопровождения и использования кода. Код приложения Visual Basic организован иерархически. Типичное приложение состоит из нескольких модулей: модуля формы для каждой формы в приложении, дополнительных стандартных модулей с общим кодом и дополнительных модулей классов. Каждый модуль содержит несколько процессов, содержащих код: процесс события, подпроцесс или процесс функции и процесс PRperty. Определение того, какой процесс к какому модулю принадлежит, имеет определенную связь с типом создаваемого приложения. Поскольку Visual Basic основан на объектах, полезно думать о приложениях с точки зрения объектов, которые они представляют. В этой главе пример приложения Vcr.vbp разработан на основе объектов, состоящих из видеомагнитофона и телевизора. Приложение видеомагнитофона содержит два модуля форм: стандартный модуль и два модуля классов. «Обозреватель объектов» можно использовать для изучения структуры проекта (рис. 5.2).
Основной формой приложения видеомагнитофона (frmVCR) является визуальное изображение комбинации видеомагнитофона и экрана телевизора (рис. 5.3). Он состоит из нескольких объектов, смоделированных по образцу реальных сцен. Набор командных кнопок (cmdPlay, cmdRecord и т. д.) имитирует кнопки управления видеомагнитофоном. Программное обеспечение видеомагнитофона также включает в себя часы (lblTime), индикатор канала (lblChannel), индикатор функций (shpPlay, shpRecord и т. д.) и кинескоп (picTV). Модуль формы Vcr.frm включает процедуры обработки событий для всех этих объектов.
Во многих случаях существуют повторяющиеся процессы, общие для нескольких объектов. Например, «нажатие» кнопки «Воспроизведение», «Перемотка назад» или «Запись» требует, чтобы кнопки «Пауза» и «Стоп» были действительными. Лучше создать общую подпрограмму, которую смогут вызывать все кнопки, чем повторять этот код в процедуре события Click каждой кнопки. Если эти подпрограммы будут изменены в будущем, все изменения можно будет внести, изменив их в одном месте. Стандартный модуль Vcr.bas содержит различные общие процедуры.
Некоторые части видеомагнитофона невидимы, например, механизм транспортировки ленты или логика записи телевизионных программ. Аналогично, некоторые функции программных видеомагнитофонов не имеют визуального изображения. Эти части и функции реализованы в виде двух модулей классов Recorder.cls и Tape.cls. Модуль clsRecorder содержит код для запуска процесса «записи», а модуль clsTape содержит код для управления направлением и скоростью «ленты». Классы, определенные в этих модулях, не связаны напрямую ни с какими объектами формы. Поскольку они представляют собой независимые модули кода, программу записи можно легко перестроить без каких-либо изменений.
Помимо разработки структуры кода, важно также установить соглашение об именах. По умолчанию Visual Basic называет первую форму проекта Form1, вторую форму Form2 и т. д. Если в вашем приложении есть несколько форм, рекомендуется дать им осмысленные имена, чтобы избежать путаницы при написании или редактировании кода. Некоторые соглашения об именах, рекомендуемые Visual Basic, перечислены в приложении B «Соглашения о кодировании VisualBasic».
Когда вы узнаете больше об объектах и научитесь писать код, обратитесь к примеру приложения VCR, чтобы найти примеры различных методов кодирования.
Механизм написания кода
Прежде чем приступить к написанию кода, важно понять механизм написания кода на Visual Basic. Как и любой язык программирования, Visual Basic имеет свои правила организации, редактирования и форматирования кода.
кодовый модуль
Код Visual Basic хранится в модулях. Существует три типа модулей: формы, стандарты и классы. Простое приложение может иметь только одну форму, при этом весь код приложения находится в модуле формы. Если приложение большое и сложное, необходимо добавить дополнительные формы. В конечном итоге вы можете обнаружить, что общий код выполняется в нескольких формах. Поскольку вы не хотите дублировать код в обеих формах, создайте отдельный модуль, содержащий процедуры реализации общего кода. Автономные модули должны быть стандартными модулями. Затем вы можете создать библиотеку модулей, содержащую общие процедуры.
Каждый стандартный модуль, модуль класса и модуль формы могут содержать:
заявление. Вы можете размещать объявления констант, типов, переменных и процедур библиотеки динамической компоновки (DLL) на уровне модуля в формах, классах или стандартных модулях.
процесс. Процедура Sub, Function или Property содержит фрагменты кода, которые могут выполняться как единое целое. Они обсуждаются в разделе «Обзор процесса» далее в этой главе.
модуль формы
Модули форм (расширение файла .FRM) являются основой большинства приложений Visual Basic. Модуль формы может содержать процедуры для обработки событий, общие процедуры и объявления переменных, констант, типов и внешних процедур на уровне формы. Если бы вы просмотрели модуль формы в текстовом редакторе, вы также увидели бы описание формы и ее элементов управления, включая настройки их свойств. Код, написанный в модуле формы, специфичен для конкретного приложения, которому принадлежит форма; он также может ссылаться на другие формы или объекты внутри приложения;
Стандартный модуль
Стандартные модули (расширение файла .BAS) — это контейнеры для процедур и объявлений, к которым обращаются другие модули внутри приложения. Они могут содержать глобальные (в масштабе приложения) или на уровне модуля объявления переменных, констант, типов, внешних процедур и глобальных процедур. Код, написанный в стандартных модулях, не обязательно должен быть привязан к конкретному приложению; если позаботиться о том, чтобы ссылаться на формы и элементы управления не по имени, стандартные модули можно повторно использовать во многих различных приложениях.
модуль класса
В Visual Basic модули классов (расширение файла .CLS) являются основой объектно-ориентированного программирования. Код можно писать в модулях классов для создания новых объектов. Эти новые объекты могут содержать пользовательские свойства и методы. По сути, форма — это именно такой модуль класса, на котором можно размещать элементы управления и отображать окна формы.
Подробности Более подробную информацию о написании кода в модулях классов см. в главе 9 «Программирование с использованием объектов».
Обратите внимание, что выпуски Visual Basic Professional и Enterprise также включают документы ActiveX, конструкторы ActiveX и пользовательские элементы управления. Они представляют новые типы модулей с разными расширениями файлов. С точки зрения кодирования эти модули следует рассматривать как модули форм.
Используйте редактор кода
Редактор кода Visual Basic — это окно, в котором пишется большая часть кода. Это похоже на узкоспециализированную программу обработки текстов со множеством функций, облегчающих написание кода Visual Basic. На рис. 5.4 показано окно «Редактор кода».
Поскольку вам необходимо работать с кодом Visual Basic в модуле, вам необходимо открыть независимое окно «Редактор кода» для каждого модуля, выбранного в «Проводнике проектов». В каждом модуле для каждого объекта, содержащегося в модуле, код в модуле подразделяется на независимые части, соответствующие объекту. Используйте «Окно списка объектов» для переключения между частями. В модуле формы список содержит общий раздел, раздел для самой формы и раздел для каждого элемента управления, содержащегося в форме. Для модулей классов в списке есть общий раздел и раздел классов, для стандартных модулей отображается только один общий раздел.
Каждый фрагмент кода может содержать несколько различных процедур, доступ к которым осуществляется с помощью окна списка процедур. Список процедур модуля формы содержит отдельный раздел для каждой процедуры события формы или элемента управления. Например, список процессов элемента управления Label включает сегмент событий Change, сегмент событий Click, сегмент событий DblClick и т. д. Модули класса лишь перечисляют процедуры событий самого класса — инициализацию и завершение. Стандартный модуль не перечисляет какие-либо процедуры обработки событий, поскольку стандартный модуль не поддерживает события.
Список процедур общего раздела модуля содержит только один раздел - раздел объявлений, в котором размещаются переменные уровня модуля, константы и объявления DLL. Когда вы добавляете в модуль подпроцедуры или функциональные процедуры, эти процедуры добавляются в поле списка процедур под разделом объявлений.
В окне редактора кода доступны два разных представления кода. Вы можете просматривать по одному процессу за раз или просматривать все процессы в модуле, отделенные друг от друга линиями (как показано на рисунке 5.4). Для переключения между двумя представлениями используйте кнопку «Выбор вида» в левом нижнем углу окна редактора.
автозаполнение кодирования
Visual Basic может автоматически заполнять операторы, свойства и параметры, что делает написание кода более удобным. Когда вы вводите код, редактор перечисляет подходящие варианты, операторы, прототипы или значения функций. Доступ к ним осуществляется через команду «Параметры» в меню «Инструменты». На вкладке «Редактор» диалогового окна «Параметры» доступны параметры, которые определяют, разрешить или отключить значения настройки для отдельных кодов.
Когда вы вводите имя элемента управления в код, «Свойства элемента автоматического списка» выделит раскрывающийся список свойств элемента управления (рис. 5.5). Введя первые несколько букв имени атрибута, вы выберете имя из таблицы, а нажатие клавиши Tab завершит ввод. Эта опция очень полезна, если вы не уверены, какие свойства имеет данный элемент управления. Даже если вы решите отключить функцию автоматического списка участников, вы все равно можете использовать комбинацию клавиш CTRL J, чтобы получить эту функцию.
Функция «Автоматическая краткая информация» отображает синтаксис операторов и функций (рис. 5.6). После ввода допустимого оператора Visual Basic или имени функции синтаксис отображается сразу под текущей строкой, а ее первый параметр отображается жирным шрифтом. После ввода значения первого параметра второй параметр появляется снова, также выделенный жирным шрифтом. «Автоматическую быструю информацию» также можно получить с помощью комбинации клавиш CTRL I.
закладка
Закладки можно использовать в редакторе кода для пометки определенных строк кода, чтобы можно было легко вернуться к ним позже. Включение и выключение закладок, а также команды для перехода к существующим закладкам можно получить из пунктов меню «Правка», «Закладка» или панели инструментов «Редактировать».
Дополнительная информация Более подробную информацию о том, как использовать комбинации клавиш для использования различных функций окна редактора кода, см. в разделе «Сочетания клавиш окна кода».
основы кодирования
В этом разделе рассказывается о механике написания кода, в том числе о том, как разбивать и объединять строки кода, как добавлять комментарии, как использовать числа и соглашения об именах Visual Basic.
Разбить однострочный оператор на несколько строк
Вы можете использовать символы продолжения строки (пробел, за которым следует подчеркивание) в окне «Код», чтобы разбить длинные инструкции на несколько строк. Благодаря использованию символов продолжения строки код становится более читабельным как на компьютере, так и в печати. В следующем примере используется символ продолжения строки (_), чтобы разделить код на несколько строк:
Data1.RecordSource=_
ВЫБЕРИТЕ*FROMTitles,Publishers_
&WHEREPublishers.PubId=Titles.PubID_
&ANDPublishers.State='CA'
В той же строке комментарии не могут быть добавлены после символа продолжения строки. Существуют некоторые ограничения на использование символов продолжения строки.
Объединение нескольких операторов в одной строке
Обычно в строке находится один оператор Visual Basic без знака завершения, но вы можете разместить два или более операторов в одной строке, разделив их двоеточием (:).
Text1.Text=Привет:Red=255:Text1.BackColor=
Красный
Однако, чтобы код было легче читать, лучше помещать по одному оператору в каждой строке.
Дополнительные сведения см. в приложении A «Характеристики, ограничения и формат файла Visual Basic».
Добавьте комментарии к вашему коду
Вы часто будете встречать символ комментария (') при чтении примеров в этом руководстве. Этот символ сообщает Visual Basic игнорировать то, что следует за этим символом. Это комментарии во фрагменте кода, как для удобства разработчика, так и для удобства других программистов, которые позже смогут изучить исходный код. Например:
'Это с левой стороны экрана
'Начать комментарий.
Text1.Text=Привет! 'Поместите это в текстовое поле.
'Добро пожаловать.
Комментарии могут находиться на той же строке, что и оператор, писаться после оператора, либо занимать целую строку. Приведенный выше код демонстрирует обе ситуации. Помните, что комментарий не может следовать за символом продолжения строки в той же строке.
Примечание. Вы можете добавлять или удалять символы комментариев из блока кода, выделив две или более строк кода и нажав кнопку «Блок комментариев» или «Удалить блок комментариев» на панели инструментов «Редактирование».
Понимать системы счисления
Большинство значений в этом документе представлены в десятичном формате (по основанию 10). Но иногда удобнее использовать шестнадцатеричные числа (по основанию 16) или восьмеричные (по основанию 8). Visual Basic использует префикс &H для обозначения шестнадцатеричных чисел и &O для обозначения восьмеричных чисел. В следующей таблице показано десятичное, восьмеричное и шестнадцатеричное представление одного и того же числа.
Обычно нет необходимости знать шестнадцатеричную или восьмеричную систему счисления, поскольку компьютеры могут работать с числами в любой из систем. Однако некоторые системы счисления более подходят для определенных задач, чем другие, например, для использования шестнадцатеричных чисел для установки цвета экранов и элементов управления.
Соглашения об именах VisualBasic
При написании кода Visual Basic вы объявляете и называете множество элементов (процедуры Sub и Function, переменные, константы и т. д.). Имена процедур, переменных и констант, объявленных в коде Visual Basic, должны соответствовать следующим правилам:
1. Они должны начинаться с буквы.
2. Они не могут содержать встроенные точки или символы объявления типа (специальные символы, определяющие типы данных).
3. Они не могут превышать 255 символов. Имена элементов управления, форм, классов и модулей не могут превышать 40 символов.
4. Они не могут иметь то же имя, что и ключевые слова с ограниченным доступом.
Ключевые слова с ограниченным доступом — это слова, используемые Visual Basic и являющиеся частью языка. К ним относятся предопределенные операторы (например, If и Loop), функции (например, Len и Abs) и операторы (например, Or и Mod).
Подробная информация. Более подробную информацию о таблице ключевых слов см. в «Справочном руководстве по языку Visual Basic 6.0».
Формы и элементы управления могут иметь то же имя, что и ключевые слова с ограниченным доступом. Например, вы можете назвать цикл управления. Но на элемент управления нельзя ссылаться в коде обычным способом, поскольку Visual Basic подумает, что Loop означает ключевое слово. Например, следующий код приведет к ошибке.
Loop.Visible=True 'Ошибка.
Чтобы ссылаться на формы или элементы управления, имеющие то же имя, что и ключевое слово с ограниченным доступом, необходимо уточнить их или заключить в квадратные скобки []. Например, следующий код не приведет к ошибке.
MyForm.Loop.Visible=True 'Использовать имя формы
«Оцените это.
[Loop].Visible=True 'квадратные скобки
«Это сработало.
Квадратные скобки можно использовать таким образом при ссылке на формы и элементы управления, но не во время объявления переменной или определения процедуры, когда имя переменной или процедуры совпадает с ключевым словом Restricted. Квадратные скобки также можно использовать, чтобы заставить Visual Basic принимать имена, предоставленные другими библиотеками типов, которые конфликтуют с ограниченными ключевыми словами.
Обратите внимание , что ввод квадратных скобок утомляет, поэтому желательно использовать менее ограниченные ключевые слова для имен форм или элементов управления. Однако если новая версия Visual Basic определяет новые ключевые слова, которые конфликтуют с существующими формами или элементами управления, вы можете использовать этот метод при обновлении кода для использования новой версии. _
->