Borland Delphi 6: коротко о новых возможностях

Наталия Елманова

Что нового появилось в среде разработки

Изменения в компиляторе

Новое в VCL и RTL

Приложения с базами данных: что нового?

Поддержка XML

Несколько слов о распределенных приложениях

   Новые средства создания Интернет-приложений

   Что нового в поддержке COM

   Поддержка CORBA

Создание многоплатформенных приложений

Вместо заключения

 

В начале мая этого года компания Borland Software Corporation, известный производитель средств разработки и средств middleware, анонсировала новую, шестую версию Delphi — средства быстрой разработки Windows-приложений, бывшего долгое время ведущим продуктом этой компании и по-прежнему весьма популярного в нашей стране. В этой статье мы кратко рассмотрим, что нового появилось в этом продукте по сравнению с предыдущей версией. Мы предполагаем, что читатели хорошо знакомы с предыдущими версиями Delphi; тем же, кто с этим продуктом не знаком, мы можем порекомендовать обратиться к книгам, посвященным предыдущим версиям, — их на русском языке издано более чем достаточно.

Что нового появилось в среде разработки

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

В среде разработки появился новый элемент — дерево объектов (Object TreeView), отображающее иерархию компонентов приложения с точки зрения их принадлежности друг другу (рис. 1). В дереве объектов можно осуществлять операции drag-and-drop, перемещая дочерние компоненты на другие контейнеры, и эти изменения синхронно отображаются в редакторе форм.

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

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

  • Diagram — отображение связей между компонентами доступа к данным наподобие редактора модулей данных из предыдущей версии Delphi);
  • HTML Scrip — отображение кода HTML и JavaScript, сгенерированного компонентами, которые предназначены для создания интерактивных Web-приложений (подробнее о них можно прочесть в статье «Разработка Internet-приложений с использованием Borland Delphi и Kylix» в этом номере журнала);
  • HTML Resul — отображение HTML-кода, сгенерированного при использовании HTML-шаблона;
  • Preview — отображение сгенерированного HTML-вывода так, как он выглядит в клиентском браузере (рис. 3).

В инспекторе объектов также появилось кое-что новое. В частности, если значением свойства является компонент, то он отображается другим цветом, и если щелкнуть по нему, то можно раскрыть список его свойств. На наш взгляд, это довольно удобное новшество (рис. 4).

Свойства, не предназначенные для редактирования (read-only properties), теперь также отображаются другим цветом. Кроме того, можно указать, какими цветами что отображать в инспекторе объектов — для этой цели используется диалог Object Inspector Properties (рис. 5).

Средства Code Insight и Code Completion тоже претерпели некоторые изменения. Так, теперь можно пользоваться средством Code completion в секции интерфейса модулей, получать список виртуальных методов, свойств и методов интерфейса, фильтровать значения элементов в списке. Несколько изменился внешний вид выпадающего списка Code Completion: элементы разных типов отображаются разными цветами, вместе с именем метода появляется и список параметров, а размеры окна со списком теперь можно менять (рис. 6).

Отметим, что для создания Web-приложений в новой версии предусмотрена отдельная инструментальная панель (рис. 7).

В начало В начало

Изменения в компиляторе

Кратко перечислим некоторые изменения, внесенные в компилятор:

  • все процедуры и функции, предназначенные для работы с типами данных Variant, удалены из модуля System и перенесены в новый модуль Variants. Отметим, что в Delphi 6 можно создавать собственные вариантные типы данных — соответствующие классы должны быть наследниками класса TcustomVariantType;
  • модуль Consts.pas разделен на две части: Consts.pas и RTLConsts.pas;
  • директива компилятора $IFDEF поддерживает вычисление выражений, использующих константы, например:
    {$IF Defined(WIN32) and (MyValue > 1) }
    ...
    {$ENDIF}

    В этих выражениях могут использоваться и константы Pascal, причем можно проверять, объявлены ли они, например:

    {$IF Declared(SomeConst)}
    ...
    {$ENDIF}
  • Delphi 6 содержит новый встроенный ассемблер. Подробные сведения о нем (а также о некоторых других изменениях, внесенных в компилятор) можно найти в справочной системе продукта.
В начало В начало

Новое в VCL и RTL

Библиотека компонентов Visual Component Library, как это всегда происходит при выпуске очередной версии Delphi, пополнилась новыми компонентами. Из компонентов, предназначенных для создания пользовательских интерфейсов Windows-приложений, следует особо отметить:

  • TLabeledEdit — поле для ввода текста с меткой (рис. 8);
  • TValueListEditor — компонент, предназначенный для отображения списка пар типа «параметр-значение», наподобие того, что представлен в инспекторе объектов (рис. 9);
  • TComboBoxEx — комбинированный список, позволяющий отображать рядом с текстом графические изображения (рис. 10);
  • TColorBox — комбинированный список для выбора цвета (рис. 11).

Многие из компонентов приобрели дополнительные свойства (например, указывающие на то, как выглядят границы компонентов, такие как BevelEdges, BevelInner, BevelOuter, BevelKind, BevelWidth).

Еще одно новшество VCL — возможность использования в качестве свойств так называемых субкомпонентов, то есть компонентов, владельцем которых является не форма, а другой компонент. Иными словами, свойством какого-либо компонента может быть ссылка на компонент, который представляет собой либо обычный компонент, либо субкомпонент. Это означает, что теперь свойства субкомпонентов должны быть доступны в списке свойств компонентов-владельцев, и именно с этой целью в инспектор объектов были внесены соответствующие изменения, о которых упоминалось выше.

Появление в одной из предыдущих версий Delphi компонента TActionList существенно облегчило создание пользовательских интерфейсов приложений. В Delphi 6 для работы с объектами TAction добавлены новые компоненты — TActionManager (для хранения коллекции объектов Taction; рис. 12), TToolActionBar и TMainMenuActionBar (интерфейсные элементы, предназначенные для предоставления пользователю доступа к функциональности, описанной в объектах TAction).

Отметим, что создавать пункты меню в компоненте TMainMenuActionBar и кнопки на инcтрументальных панелях, созданных с помощью компонентов TtoolActionBar, можно посредством переноса соответствующих объектов методом drag-and-drop из редактора свойств компонента TActionManager. Delphi 6 также содержит внушительный набор стандартных компонентов TAction.

Несколько новых свойств и событий появилось у компонентов TTreeView, TMenuItem, TListView, TCheckListBox, THeaderControl, TDateTimePicker, TDBLookupListBox, TDBLookupComboBox, TDBComboBox, TDBListBox, TOpenDialog, у классов TApplication, TScreen, TThread, TCustomComboBox, TListBox, TImage, TList, TStringList, TObjectList, TComponentList, TClassList, TCollection, TStack, TQueue, TObjectStack и TObjectQueue. Появилось также несколько новых классов, напр. TCustomListControl, THashedStringList)

Свойства типа Interface теперь могут быть опубликованы, если имеется хотя бы один компонент, реализующий данный интерфейс.

Из других изменений в VCL и RTL следует выделить наличие некоторых новых функций для работы с датой и временем, пары новых функций для работы с динамическими массивами, нескольких новых стандартных цветов, включая clMoneyGreen — серо-зеленый, как доллар (ох уж эти американцы, считающие свою страну пупом земли и центром вселенной!). Отметим также, что многие функции для работы с данными типа Variant теперь вызывают не функции Windows API, а функции из модуля Variants.pas — это сделано c целью поддержки многоплатформенной разработки приложений.

В начало В начало

Приложения с базами данных: что нового?

В Delphi 6 появился новый универсальный механизм доступа к данным — dbExpress. Для его применения в приложениях Delphi 6 содержит компоненты доступа к данным и драйверы баз данных, реализующие интерфейсы этого универсального механизма доступа к данным с помощью клиентских API соответствующих серверных СУБД. В комплект поставки Delphi 6 входят драйверы dbExpress для InterBase, Oracle, DB2, MySQL. Драйверы dbExpress представляют собой одну динамически загружаемую библиотеку, и обычно только она и требуется при поставке клиентских приложений, использующих dbExpress. Спецификация dbExpress разработана Borland, но является открытой, поэтому при необходимости можно создавать драйверы dbExpress для своих приложений.

Все эти особенности выгодно отличают dbExpress от библиотеки BDE, традиционно использовавшейся в Delphi и бывшей единственным поддерживаемым универсальным механизмом доступа к данным до момента появления в Delphi 5 поддержки ADO на компонентном уровне. BDE, будучи потомком библиотеки Paradox Engine, сохранила многие особенности механизма доступа к настольным базам данных, которые не всегда успешно можно применить при работе с серверными СУБД. Можно сказать, что к настоящему времени вопрос замены универсального механизма доступа к данным на более соответствующий современным потребностям уже назрел, тем более что такой механизм все равно требовалось разработать при создании Kylix — Linux-версии Delphi (статью о Kylix вы сможете найти в этом номере журнала).

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

В связи с тем, что Delphi теперь поддерживает три универсальных механизма доступа к данным: BDE, ADO и dbExpress, палитра компонентов несколько реорганизована (рис. 13).

Отметим, что в Delphi 6 в палитре компонентов нет страницы MIDAS (да и сам термин MIDAS выведен из употребления). Компоненты для распределенных приложений перенесены на новую страницу DataSnap, содержащую также несколько новых компонентов (рис. 14).

В основные компоненты доступа к данным с помощью механизма dbExpress входят:

  • TSQLConnection — компонент, обеспечивающий соединение с базой данных и взаимодействующий непосредственно с драйвером dbExpress;
  • TSQLDataSet — клиентский набор данных, реализующий функциональность однонаправленного курсора (сама библиотека dbExpress позволяет создать только однонаправленный курсор, так как не буферизует данные в клиентском приложении);
  • TSQLQuery, TSQLStoredProc и TSQLTable — клиентские наборы данных, также реализующие функциональность однонаправленного курсора и созданные главным образом для совместимости с соответствующими компонентами BDE в унаследованных приложениях, в которых производится замена BDE на dbExpress.

При необходимости редактирования данных, полученных с помощью dbExpress, можно использовать компоненты TClientDataSet или TSQLClientDataSet. Для реализации клиентских наборов данных, кэшируемых в оперативной памяти клиентского приложения, в Delphi 6 имеется три новых класса: TBDEClientDataSet, TSQLClientDataSet, TIBClientDataSet, которые являются потомками нового базового класса TСustomClientDataset, предназначенными для применения с разными механизмами доступа к данным.

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

Компонент TUpdateSQL также подвергся некоторым изменениям: теперь его можно использовать не только с наборами данных BDE, но и с другими наборами данных; можно также использовать несколько таких компонентов при кэшировании данных с помощью клиентских наборов данных. Следует заметить, что клиентские наборы данных, появившиеся в Delphi 3 лишь как средство кэширования данных в презентационном слое распределенных приложений, постепенно стали основным механизмом работы с базами данных во всех приложениях, независимо от их архитектуры. Впрочем, этого следовало ожидать — ведь многие разработчики их уже давно используют именно с данной целью.

Для поддержки клиентских наборов данных в распределенных приложениях созданы два новых компонента: TSharedConnection, позволяющий клиентскому приложению обращаться к нескольким удаленным модулям данных одного сервера, и TLocalConnection, предназначенный для применения с провайдерами данных, которые содержатся в том же приложении, что и клиентский набор данных.

Обсуждая поддержку баз данных в Delphi 6, нельзя не остановиться на поддержке ADO. Здесь, к сожалению, ничего нового не появилось — ни редактора запросов, хотя бы отдаленно напоминающего SQL Builder, ни исправлений ошибок в help-файле (например, в списке методов компонента TADOStoredProc по-прежнему нет ссылки на ExecProc — один из самых важных методов этого компонента); как и раньше, нет никакой поддержки OLAP, кроме наличия компонентов DecisionCube, по-прежнему не работающих с ADO-источниками; нет никакой поддержки на компонентном уровне новых объектов, появившихся в ADO 2.5 и 2.6. Похоже, поддержке ADO в Delphi в этом году уделялось не слишком много внимания. А ведь такие досадные мелочи могут заставить кого-либо задуматься о том, что есть и другие средства разработки…

В начало В начало

Поддержка XML

Delphi 6 поддерживает создание приложений, использующих XML-документы и позволяющих интегрировать их в приложения с базами данных. В частности, этот продукт содержит несколько различных инструментов для работы с XML-документами:

  • компоненты и интерфейсы для работы с XML-документами в приложениях;
  • XML Data Binding wizard, генерирующий классы для представления конкретного XML-документа;
  • компоненты и утилиты для преобразования XML-документов в пакеты данных и обратно, в том числе XML Mapping Tool (рис. 15).

Новая версия позволяет работать с XML-документами так же, как с обычными базами данных. Поддержка применения XML в приложениях с базами данных основана на компонентах, конвертирующих пакеты данных в XML-документы и обратно. Для применения этих компонентов следует определить соответствующие правила преобразования XML в пакеты данных и обратно, что производится с помощью утилиты XML Mapping Tool. После определения правил преобразования (сохраненных в файле) можно либо конвертировать XML-документ в клиентский набор данных, либо работать с ним как с базой данных, считывая данные и сохраняя в нем результаты редактирования.

В начало В начало

Несколько слов о распределенных приложениях

Распределенные приложения с применением COM, CORBA, серверов приложений и Web-серверов уже давно привлекают внимание разработчиков. В новой версии Delphi появилось много полезных инструментов и компонентов для создания распределенных приложений, и их подробное описание заняло бы не одну страницу. В данном обзоре за неимением места мы лишь кратко упомянем, что нового появилось в этой области. Возможно, в дальнейшем мы еще вернемся к этой теме.

В начало В начало

Новые средства создания Интернет-приложений

Средства создания Интернет-приложений подверглись в новой версии Delphi весьма существенным изменениям. Теперь Delphi поддерживает Web-сервисы и написание клиентов для них с применением SOAP, создание приложений для Apache и многое другое (о том, что нового появилось в средствах создания Web-приложений в Delphi 6, вы также сможете прочесть в статье «Разработка Internet-приложений с использованием Borland Delphi и Kylix»).

В начало В начало

Что нового в поддержке COM

В Delphi 6 включена поддержка COM+. В частности, можно создавать новые COM-объекты как объекты COM+, а также описывать события COM+. Кроме того, создание таких объектов теперь возможно и в редакции Delphi Professional.

Помимо этого можно использовать COM object wizard для создания серверных объектов, реализующих любые интерфейсы из всех библиотек типов, зарегистрированных в операционной системе. В предыдущей версии можно было создать реализацию только вновь созданного интерфейса — наследника IUnknown.

В начало В начало

Поддержка CORBA

Через три года после приобретения VisiBroker в состав Delphi наконец-то включили компилятор IDL2PAS, предназначенный для создания CORBA-серверов и клиентов. С его помощью можно генерировать код stub- и skeleton-объектов на языке Pascal (до сих пор пользователи VisiBroker могли генерировать соответствующий код только на языках C++ и Java, что исключало полноценную поддержку CORBA в Delphi — раннее поддержка CORBA базировалась на применении для этой цели COM). Компилятор IDL2PAS доступен с помощью пункта меню Tools|Regenerate CORBA IDL files среды разработки Delphi.

Полноценная поддержка CORBA в Delphi означает, что теперь можно создавать клиентские приложения для CORBA-серверов, созданных с помощью других средств разработки и языков программирования (в частности, C++ или Java), а также для серверов приложений, поддерживающих CORBA (главным образом Borland Application Server; см. статью в этом номере журнала).

В начало В начало

Создание многоплатформенных приложений

Пакет Delphi 6 содержит еще одну библиотеку компонентов — Borland Component Library for Cross-Platform (CLX), предназначенную для применения и в Windows, и в Linux (подробности о ней вы найдете в статье, посвященной Borland Kylix). Многие из компонентов и классов CLX имеют такие же имена, что и соответствующие компоненты и классы VCL, а также во многом совпадающие списки свойств, событий и методов. CLX можно использовать для создания приложений, совместимых с приложениями Kylix на уровне исходных текстов.

Для создания приложения, переносимого в Linux, нужно выбрать из меню среды разработки пункт File|New|CLX application. После этого палитра компонентов изменится: на ней будут отображены компоненты, доступные в CLX.

Следует иметь в виду, что на сегодняшний день существует не так много RAD-средств, которые позволяют создавать многоплатформенные приложения, — особенно основанных на компиляторах.

В начало В начало

Вместо заключения

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

Мы убедились в том, что Delphi 6, безусловно, интересный и заслуживающий внимания продукт, и те нововведения, которые в нем присутствуют, в основном отражают современные тенденции развития индустрии: в этом продукте есть поддержка Web-сервисов, SOAP, обмена XML-данными, полноценная поддержка CORBA и даже поддержка многоплатформенности. Явно заметен прогресс по сравнению с предыдущей версией, в которой было, пожалуй, не так уж много нововведений: поддержка ADO, некоторые изменения в технологии распределенных вычислений, изменения в поддержке COM — да вот, собственно, и все... Можно, наверное, утверждать, что к лучшим результатам (с точки зрения желания приобрести продукт) приводит выпуск новых версий не раз в год по календарю, как это было раньше, а именно в тот момент, когда появляются новые технологии, стандарты, платформы, поддержка которых нужна разработчикам.

И тем не менее нельзя не отметить, что пока в Delphi поддерживаются далеко не все современные технологии. Например, нет никакого намека на поддержку Microsoft .NET, и это в ситуации, когда версия Delphi для Windows (операционной системы, созданной, как известно, все той же компанией Microsoft) остается одним из самых популярных и продаваемых продуктов Borland. Менеджеры Borland уверяют, что просто ждут появления соответствующей операционной системы. Им, конечно, виднее. А нам решать, готовы ли и мы ждать вместе с ними.

КомпьютерПресс 6'2001