Visual2000 · Архив статей Колесова & Павловой

Новшества Visual Basic 5.0
Часть 2. Новые элементы среды разработки в VB5

Андрей Колесов

Дополнительно смотрите:

© 1997, Андрей Колесов
Авторский вариант. Статья была опубликована c незначительной литературной правкой в журнале "КомпьютерПресс" № 04/97, c. 103-109.


Примечание. Хотя эта статья описывает VB 5, она может быть полезна и для тех, кто приступает к изучению среды VB 6. Дело том, что в VB 5 был радикально изменен интерфейс системы по сравнению с предыдущими версиям VB, при этом в целом он остался почти таким же в VB 6.

Интерфейс предыдущих четырех версий Visual Basic...

Интерфейс предыдущих четырех версий Visual Basic в целом строились на идеях, заложенных еще в VB 1.0. В новой, пятой, версии среда разработки претерпела довольно существенные изменения, в том числе принципиального характера, что позволяет говорить о ее качественно новом уровне. Следует отметить, с одной стороны, расширение функций и интеллектуальности среды, а с другой - возможность ее настройки ее соответствии с требованиями конкретного разработчика.

При беглом знакомстве с VB5 трудно сказать, насколько все новшества действительно актуальны и удачно реализованы, но общий прогресс налицо. Однако, несмотря на значительное число полезных новшеств, некоторые пожелания программистов, касающиеся удобства работы не услышаны (или не поняты) фирмой.

Еще один важный момент. Данная среда используется во всех редакциях Visual Basic, включая продукты, в которых содержится VBA (MS Office 97), а также более чем в 100 других продуктах третьих фирм, имеющих лицензию на технологию VBA.

В начало статьи

Управление средой

Изменился общий дизайн среды - теперь она полностью повторяет Windows 95. Большинство режимов работы со средой устанавливаются в окне Options (имеется 6 вкладок: Editor, Editor Format, General, Docking, Environment, Advanced), которое вызывается соответствующей командой из меню Tools.

Как и раньше, пользователь может управлять составом видимых элементов среды, а также их размерами и размещением на экране (рис. 1). В VB5 используются девять, не считая стандартной панели инструментов и меню, основных инструментальных окон (их список приведен во вкладке Docking): Immediate Window, Locals Window, Watches Window, Project Explorer, Properties Window, Object Browser, Form Layout, Toolbox, Color Palette. Интересное новшество - для каждого из такого окна во вкладке Docking можно установить режим Dockable. В этом случае окно будет автоматически "подключаться" к основному окну среды, принимая соответствующую форму, например, "прилипая" к его вертикальной или горизонтальной границе.

Рис. 1. Среда разработки VB5. В основном все это знакомо, но если приглядеться, можно увидеть много нового. Например, можно использовать дополнительные панели инструментов, в том числе и созданные самим пользователем. Заметно изменился общий дизайн - теперь это однозначно стиль Windows 95

В начало статьи

Панель меню и инструментов

В предыдущих версиях все элементы среды VB (различные панели инструментов и окна) размещались на фоне текущего экрана Windows. Теперь роль фонового экрана выполняет основное окно среды с размещенной сверху панелью меню (Menu) и инструментов (Standard Toolbar). К этим двум основным панелям прибавились еще три специализированные - Edit, Form Editor и Debug, которые можно размещать в любых местах экрана. Управление режимом вывода этих панелей инструментов (строка меню присутствует на экране всегда) выполняется командой Toolbars из меню View. При этом в окне Customize (там имеются три вкладки - Toolbars, Commands и Options) можно задавать различные режимы визуализации этих панелей, например замеры иконок инструментов, режим вывода подсказок и пр.

Более того, теперь пользователь может формировать собственные панели инструментов. Для этого нужно сначала во вкладке Toolbars создать новую панель (кнопка New), а потом наполнить ее нужными командами, просто перетаскивая в нее мышью команды среды из списка Commands, находящегося во вкладке Commands (рис. 2). Для полного формирования новой панели потребуется не более одной минуты!

Рис. 2. Формирование собственной панели инструментов пользователя и последующее ее редактирование выполняется простым перетаскиванием в нее мышью нужных команд из списка Commands

В начало статьи

Работа с формами проекта

Наибольшим принципиальным изменениям в среде разработки подверглась работа с формами проекта. Ранее они просто располагались на экране в виде самостоятельного окна. При этом его физические размеры и расположение в режиме проектирования однозначно соответствовали его реальным характеристикам в самом приложении.

Теперь каждая форма проекта находится в отдельном окне (рис.3). Это позволяет, например, ограничить занимаемое им место на экране в режиме разработки, показывая лишь нужную в данный момент его часть (в случае необходимости его можно всегда развернуть на весь экран).

Рис. 3. Возможность одновременной работы с несколькими проектами. Каждая форма теперь располагается в отдельном окне, их взаимное расположение управляется с помощью нового инструментального окна Form Layout

Самое главное, что теперь расположение окон, в которых находятся различные формы, во время разработки никак не связано с реальным положением форм в конечном приложении. Это особенно удобно при работе с перекрывающими формами - при проектировании их можно разместить в разных частях экрана. Разработчик видит реальное расположение форм своего проекта благодаря новому окну среды - Form Layout. Именно его использует программист для перемещения форм проекта по экрану - с помощью мыши миниатюрные изображения форм просто перетаскиваются по экрану монитора, нарисованного в окне Form Layout.

Более того, в VB5 появилась возможность одновременной работы с несколькими проектами. Это может быть особенно полезно, например, при отладке создаваемых вами элементов управления ActiveX.

В начало статьи

Работа с кодом в окне Code

Претерпела изменения и логика работы с кодом программы (рис. 4). Ранее в окне Code можно было работать с текстом лишь одной процедуры. Теперь же там можно видеть текст всех процедур данного модуля, то есть фактически полный код данного программного модуля. Я не уверен, что это очень удобно (наверное, это дело привычки), по крайней мере было бы полезно сохранить старый вариант работы, но мне не удалось найти возможность такой настройки.

Рис. 4. Расширенные возможности при вводе кода программы. В окне Code теперь можно видеть код всего модуля, а не отдельной его процедуры. В режиме Auto Quick Info сразу после ввода имени оператора VB или процедуры пользователя автоматически выдается подсказка с описанием их синтаксиса

В редакторе реализованы различные новшества, которые могут упростить набор текста программы, одновременно снизив вероятность ошибок при вводе (эти режимы устанавливаются во вкладке Editor окна Options). Так, после ввода имени стандартных операторов VB или процедур, созданных пользователем в данном проекте, редактор сразу же выдает подсказку о синтаксисе их параметров (опция Auto Quick Info).

Аналогично, стоит только ввести после имени объекта точку (к примеру, Text1.), как мгновенно появляется меню со списком всех его свойств или методов (режим Auto List Members). Вы можете выбрать нужное слово (нажав Tab) или продолжать набор вручную. В последнем случае курсор меню будет автоматически перемещаться по списку - выбор слова в нем можно выполнить в любой момент. Правда, я обратил внимание на такую странность: в списке представлены зачем-то все свойства объекта, в том числе и недоступные для использования в коде программы. Однако, если неправильно ввести имя свойства объекта, сообщение об этом выдается не сразу после ввода строки, а лишь в момент запуска программы на выполнение.

Сэкономить силы можно также, используя команду Complete Word (меню Edit). Введя несколько первых букв слова, нажмите Ctrl+Space (горячие клавиши команды) - возникнет список ключевых слов VB и идентификаторов, определенных в данном проекте. (Возможность автоматического появления списка слов, как и в приведенном выше варианте, я не обнаружил.)

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

В заключение небольшой совет: работая в режиме русского языка, не забудьте установить соответствующий шрифт во вкладе Editor Format окна Options.

В начало статьи

Средства отладки

С точки зрения операций отладки представляют интерес три окна (рис.5), реализованные в среде VB5 (они открываются с помощью соответствующих команд из меню View):

Рис. 5. Выполнение программы приостановлено на операторе, помеченном как BreakPoint. В окне Watches приведены значения переменных, указанных в качестве "просматриваемых" командой Add Watch: b$ - локальная переменная текущей процедуры; d& - глобальная переменная модуля; e& - локальная переменная другой процедуры (поэтому в данный момент она вообще не существует). В окне Locals приведены значения всех локальных переменных текущей процедуры. В окне Immediate можно вводить и выполнять любые операторы. Курсор мыши установлен в окне Code на имени переменной b$, что позволяет видеть ее значение в режиме DataTip

Окно Locals выводит имя, значение и тип данных для каждой объявленной переменной, содержащейся в выполняемой в данный момент процедуре. Кроме переменных в нем также находятся свойства процедуры. Можно щелкнуть значение переменной или свойства и изменить его. Чтобы сохранить изменение, надо нажать клавиши Enter, стрелку вверх, стрелку вниз, Tab или Shift+Tab. Недопустимые изменения значения вызовут появление сообщения об ошибке, а значение так и останется выделенным.

Окно Watches работает аналогично окну Locals, за исключением того, что оно выводит информацию о переменных, заданных в явном виде командой Add Watch в меню Debug. Выражение в окне Watches можно также редактировать подобным образом. В VB5, так же как и в VB4, можно не только указать простой просмотр значения переменной, но и дать команду на прерывание выполнения в том случае, когда условие просмотра принимает значение "истина" или когда просматриваемая переменная меняет свое значение.

Допустим, используется переменная с названием iLoopCounter. Ввод такого выражения для просмотра "iLoopCounter > 100" заставит VB остановить выполнение программы на строке, которая присваивает переменной iLoopCounter значение, большее 100. Или можно просто просматривать iLoopCounter, но при этом указать, что выполнение программы должно останавливаться каждый раз, когда iLoopCounter меняет свое значение.

Окно Immediate предоставляет возможность изменять какую угодно переменную, введя, к примеру, такую строку: iLoopCounter = 5. Поскольку окно Immediate способно обрабатывать практически любой VB-оператор, оно часто применяется как импровизированный калькулятор для математических расчетов, вычисления дат и доступа к другим функциональным возможностям, имеющимся в VB.

В окнах Watches и Immediate можно выделить переменную и перетащить ее в другое окно. При работе в окне Immediate с помощью команд меню Edit самого VB можно вырезать и вставлять текст как в окно Code, так и из него, а также удалять посторонние операторы. Например, по команде Select All в меню Edit удаляется весь код в текущем окне.

VB5 позволяет проводить отладку элементов управления внутри реального проекта, что очень полезно разработчикам. Используя Project Group, можно поместить элемент управления непосредственно в проект. После этого становятся доступными все средства отладки в VB, которые предоставят вам возможность выполнения пошаговой проверки кода созданного вами элемента управления в реальном приложении.

Так, если вы создаете элемент управления, выполняющий некоторую задачу со сложной логикой, вы можете проследить шаг за шагом его работу, применяя интерактивные команды отладки из VB. Когда этот элемент управления активизируется своим хостом (к примеру, пользователем, который щелкает его мышью, или кодом, который ссылается на него) и соответствующий код внутри элемента управления начинает выполняться, можно использовать точки прерывания, просматривать значения или осуществлять другие действия, предусмотренные отладчиком VB. Это становится возможным, поскольку в действительности вы отлаживаете элемент управления, который создан с помощью VB и выполняется внутри проекта, разработанного в этой же среде.

Разумеется, на этом процесс тестирования элемента управления не заканчивается. Если вы хотите поставлять его в качестве OCX, нужно скомпилировать его как OCX, а затем протестировать его в реальном приложении в варианте EXE-модуля.

При работе в VB5 вы обнаружите дополнительные функции отладки, которых не было в предыдущих версиях. Например, когда вы подведете курсор мыши к переменной в окне Code, рядом с ней появится надпись DataTip, показывающая значение переменной (этот режим устанавливается во вкладке Editor окна Options).

Однако VB5 включает все функции отладки из VB4. Можно по-прежнему вести одношаговую отладку, перешагивать через процедуры и выходить из них; выполнять программы до тех пор, пока вы не дойдете до того места, где в последний раз оставили курсор; выполнять быстрые просмотры; устанавливать, переключать и очищать точки прерывания.

В начало статьи

Object Browser

Хотя Object Browser и не является нововведением VB5, он имеет некоторые усовершенствования, которые будут полезны разработчикам (рис. 6). Поэтому его новая реализация заслуживает особого внимания. Во-первых, многие из разработчиков VB4 до сих пор не очень хорошо знакомы с ним. Во-вторых, очень скоро все приложения будут в основном создаваться из компонентов. Вот тогда Object Browser и аналогичные средства будут играть огромную роль в разработке.

Рис. 6. Расширенный вариант Object Browser. В верхней части окна появилось окно- вставка с результатами поиска элементов классов по заданному слову "file". Внизу окна видна краткая справка о выделенном в окне элементе

Одно из наиболее интересных нововведений Object Browser - функция Find. С ее помощью можно установить те места, в которых находится искомый текст, во всех проектах и библиотеках, на которые имеется ссылка, или же ограничить область поиска, выбрав определенный проект или библиотеку. Так, поиск "vbYes" возвращает три значения из библиотеки VBA: vbYes, vbYesNo и vbYesNoCancel (внутренние константы функции MsgBox).

Теперь каждый тип программных элементов, представленных в окне Object Browser в списках библиотек, классов и элементов классов, помечен собственной пиктограммой. И хотя, чтобы привыкнуть к ним, требуется некоторое время, но они в принципе позволяют быстро отличать, например, константы и свойства от функций и подпрограмм.

Кроме того, теперь вы можете самостоятельно определять список представленных в Object Browser элементов управления ActiveX, библиотек или выполняемых модулей. В него попадают все подобные модули, зарегистрированные на вашем компьютере и отмеченные в диалоговом окне References (меню Project).

Можно посетовать на то, что Microsoft не решилась предоставить разработчикам некоторые дополнительные возможности при работе с Object Browser. Например, кроме наличия пиктограмм было бы нелишне добавить управление составом выводимых в окне элементов, например только модулей или только переменных.

В начало статьи

Ложа дегтя...

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

Общее впечатление таково - логика перемещения по коду программы, которая состоит из огромного числа модулей, объектов и относящихся к ним процедур, весьма далека от оптимальной. При этом создатели VB принципиально игнорируют приемы, известные еще со времен DOS (например, QuickBasic).

Уже в VB 4.0 исчезла команда Procedure и соответствующее ей окно - в нем можно было видеть список модулей проекта и состав включенных в него процедур. Его заменило окно Object Browser с более широкими функциями, но работать в нем с процедурами проекта не очень удобно, так как существующие процедуры конкретной формы просто теряются в огромном списке всех возможных ее элементов (Member of Form). То же можно сказать и о списке процедур в окне Code - зачем там нужно каждый раз выдавать весь список доступных процедур конкретного объекта, когда на практике мы в 99 процентах случаев работаем со списком уже используемых процедур. При этом вариант организации окна для просмотра и поиска процедур проекта выглядит довольно прозрачно. Его, например, можно сделать в стиле Windows Explorer - слева иерархический список модулей проекта и включенных в них объектов, справа - состав соответствующих им процедур.

Авторы VB забыли и об известном еще лет 10 назад варианте поиска нужной процедуры проекта. К примеру, в QB 4.x, если курсор стоял на имени процедуры в операторе Call ProcName, то при нажатии F2 сразу выдавалось окно списка процедур с выделенным именем именно этой процедуры. Короче говоря, нажали F2, потом Enter - и вы уже в нужной процедуре.

Таких примеров можно привести немало, но хотелось бы отметить еще одно упущение Microsoft - переименование имен объектов в окне Properties не приводит к автоматической замене соответствующих идентификаторов в коде программы и событийных процедур. По-прежнему это нужно делать вручную. (О данной ситуации и своих рекомендациях по этому поводу мы писали еще в первой статье рубрики "Советы тем, кто программирует на Visual Basic" в КомпьютерПресс ь 3'96).

Так что фирме Microsoft еще есть над чем поработать при создании VB 6.0.

В начало статьи