Полезные компоненты для пользователей Delphi и С++Builder

         

Библиотека OverPLAY 3.0 для создания модульных приложений


Библиотека компонентов и классов Delphi/C++Builder OverPLAY 3.0 разработана рижской компанией BatSoft - одним из ведущих партнеров Inprise на территории бывшего СССР и одним из ведущих компаний-разработчиков Латвии. В настоящее время существуют версии этой библиотеки для Delphi 4 и C++Builder 3. Trial-версию этой библиотеки можно найти на web-сайте компании BatSoft www.batsoft.com.



Последние версии доступны по адресу:


Разработчик: Tidestone Technologies
Стоимость: $349.00
Последние версии доступны по адресу: http://www.tidestone.com
Trial-версия работоспособна в среде разработки в течение 30 дней



First Impression 5.0 представляет собой элемент управления ActiveX. Позволяет отображать широкий набор графиков (двумерные и трехмерные столбчатые, круговые и площадные диаграммы, пузырьковые диаграммы, графики в полярных коорлдинатах, графики в виде кривых и точек, и др.). Обладает весьма удобным редактором свойств, а также экспертом, позволяющим редактировать свойства графика и данные конечному пользователю на этапе выполнения. Поддерживает операцию Drag-and-drop переноса данных на график.



Рис. 7. Редактор диаграмм (First Impression)



Рис. 8. Редактор исходных данных (First Impression)

First Impression 5.0 позволяет сохранять полученные изображения в формате JPEG. Может быть отображен в составе в составе web-страниц с помощью Microsoft Internet Explorer версии не ниже 3.0.

First Impression 5.0 сопровождается подробным описанием функций API и состава объектов и их коллекций, доступных посредством автоматизации.

Рис. 9. Некоторые типы графиков и диаграмм (First Impression)



Рис. 10. Типы двухмерных графиков и диаграмм (First Impression)


Полезные компоненты для пользователей Delphi и С++Builder




- демонстрационный пример
- trial-версия

Разработчик: Gigasoft, Inc
Стоимость: $349.00
Последние версии доступны по адресу:

ProEssentials представляет собой набор библиотек для построения графиков и диаграмм. Основную часть пакета составляют динамически загружаемые библиотеки (16- и 32-разрядныя), снабженные подробным описанием содержащихся в них функций. Помимо этого, с библиотеками поставляются элементы управления VBX и ActiveX, а также VCL-компоненты Delphi, представляющие собой оболочки для этих библиотек и инкапсулирующие вызов соответствующих функций API. При использовании этой библиотеки возможно как непостредсnвенное обращение к функциям ее API, так и использование VCL-компонентв или элементов управления ActiveX.

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

Рис. 1. Стандартная столбчатая диаграмма (GigaSoft ProEssentials)

Рис. 2. График в полярных координатах (GigaSoft ProEssentials)

Рис. 3. Несколько функций на одном графике (GigaSoft ProEssentials)



Полезные компоненты для пользователей Delphi и С++Builder


- trial-версия Разработчик: Bits Per Second Ltd и Pinnacle WebWorkz
Последние версии доступны по адресам: ,
Trial-версия работоспособна в среде разработки в течение 30 дней

Graphics Server представляет собой расширенную версию элемента управления ActiveX, входящего в стандартные комплекты поставки Delphi и C++Builder. Обладает существенно более расширенными возможностями по сравнению с версией из комплекта поставки (большее разнообразие типов графиков, возможность управлять углом поворота трехмерного графика, цветами, шрифтами, заливкой, типом и положением легенды, и др.) При инсталляции этого элемента управления в среду разработки следует иметь в виду, что класс TGraph в ней уже зарегистрирован, если установлены элементы управления ActiveX из комплекта поставки; поэтому рекомендуется заменить имя класса, связанного с этим элементом управления, предлагаемое по умолчанию.

Рис. 4. Типы двумерных графиков и диаграмм (Graphics Server)

Рис. 5. Типы трехмерных графиков и диаграмм (Graphics Server)

Рис. 6 Пример трехмерной диаграммы (Graphics Server)



Хранение информации о выполненных действиях


Информация о выполненных во время сеанса работы действиях может быть сохранена в log-файлах. Log-файлы представляют собой таблицы формата Paradox; при необходимости log-файлов может быть несколько.

Рис. 15. Просмотр log-файла

Таким образом, OverDig представляет собой весьма удобный инструмент для управления серверной частью информационных систем на основе IB Database и является неплохим дополнением к утилитам администрирования IB Database, входящим в состав ее клиентской части.

Координаты компании BatSoft:
BatSoft Ltd.
Peldu 26/28, LV-1050,
Riga, Latvia
Тел. (+371) 7228649
Факс (+371) 7227859
E-mail ;
.



Эксперты для генерации SQL-запросов


OverDig содержит несколько встроенных экспертов, облегчающих генерацию текстов SQL-запросов (Select... , Select into..., For Select into.... , Insert ... ,Update... ). Например, для генерации запроса INSERT можно выбрать из списка таблицу, внести значения нужных полей и получить текст запроса.

Рис. 9. Эксперт для генерации SQL-предложения INSERT

Рис. 10. Результат работы эксперта для генерации SQL-предложения INSERT Для генерации запроса SELECT также можно выбрать имя таблицы, полей, включаемых в запрос, и полей, включаемых в условия запроса.

Рис. 11. Эксперт для генерации SQL-предложения SELECT

Рис. 12. Результат работы эксперта для генерации SQL-предложения SELECT

Отметим, что можно сгенерировать и выполнить вместе несколько SQL-запросов (что выгодно отличает эти эксперты от SQL Builder или других генераторов запросов). Сгенерированные с помощью экспертов запросы можно помещать в редактор DDL-сценариев, позволяющий редактировать несколько SQL-предложений или файлов с ними, а также выполнять их.



Компонент TTaskServer предназначен для объявления


Библиотека OverPLAY 3.0 содержит четыре невизуальных компонента:TAppServer, TDLLServer, TTaskServer и TTaskClient.



Рис. 1. Компоненты библиотеки OverPLAY

Компонент TTaskServer предназначен для объявления задачи в библиотеке-модуле или исполняемом файле. Он может находиться на главной форме приложения или на скрытой форме, содержащейся в DLL. Так как модуль может содержать несколько задач, таких компонентов на форме также может быть несколько.

Компонент TAppServer помещается в исполняемый файл в одном экземпляре. Свойства этого компонента содержат всю необходимую информацию о зарегистрированных (то есть известных в данный момент исполняемому файлу) компонентах TTaskServer и TTaskClient из всех загруженных модулей.

Компонент TDLLServer предназначен для объявления динамически загружаемой библиотеки модулем, подлежащим регистрации. Он обычно помещается на скрытую форму, содержащуюся в DLL.

Компонент TTaskClient позволяет обращаться к свойствам и методам компонента TTaskServer, обеспечивая интерфейс к нему в других модулях.


Microsoft IntelliMouse Component


Torry\vcl\system\intelli.zip
http://www.torry.ru/vcl/system/ intelli.zip
Разработчик - Baque und Lauter GmbH,
Поставляется в виде *.dcu-файлов
Стоимость - $20
Последние версии доступны по адресу:

Этот компонент позволяет использовать Intellimouse в приложениях, созданных с помощью Delphi 3. Отметим, что пользователи Delphi 4 и C++Builder 4 вряд ли в нем нуждаются - в этих средствах разработки поддержка Intellimouse имеется и без дополнительных компонентов.

Рис. 6. Пример использования Microsoft IntelliMouse Component (все представленные интерфейсные элементы действительно работают с Intellimouse).



Последние версии доступны по адресу:


Torry\vcl\system\msysinfo.zip

Разработчик - Michal Mutl, t
Полнофункциональный свободно распространяемый компонент.
Имеются версии для Delphi 3 и Delphi 4 в виде *.dcu-файлов.
Последние версии доступны по адресу:

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





Рис. 5. Примеры использования MiTeC System Info 3.0


Модуль BDEUtils.pas


Описанным выше методом с магической комбинацией ctrl+shift+пробел узнаем, что в D5 введен тип TDatabaseLogin вместо TLoginEvent. В связи с этим нужно изменить в разделе interface описание функции function LoginToDatabase(Database: TDatabase; OnLogin: {$IFDEF RX_D5} TDatabaseLoginEvent {$ELSE} TLoginEvent {$ENDIF}): Boolean;

и повторить его в разделе implementation. Изменение тела функции не требуется.

В разделе implementation этого модуля функция GetNativeHandle требует изменения тела (D5 не имеет функции DBError, во всяком случае я не нашел ни ее, ни ее замены. Поэтому (исходя из ее функциональности) просто ставим там выброс исключения) {$IFDEF RX_D5} else raise EDBEngineError.Create(SLocalDatabase); {$ELSE} else DBError(SLocalDatabase); {$ENDIF}

Вместо выброса исключения можно использовать функцию DBIError. Опять архивируем и перекомпилируем библиотеку.



Модуль DBFilter.pas


Оказывается (магическая комбинация ctrl+shift+пробел), что в функции TRxDBFilter.CreateExprFilter имеется ошибка - функция DbiAddFilter поменяла тип формального параметра при своем вызове. Исправляем этот факт (самое простое что можно сделать - это попытаться привести имеющуюся переменную к требуемому типу. Это может не пройти, но если не пройдет - тогда и будем думать:): function TRxDBFilter.CreateExprFilter: hDBIFilter; begin Result := nil; if (FFilter.Count > 0) then if BuildTree then try Check(DbiAddFilter((FDatalink.DataSet as TBDEDataSet).Handle, Longint(Self), FPriority, False, {$IFDEF RX_D5} pCANExpr( {$ENDIF} TExprParser(FParser).FilterData {$IFDEF RX_D5} ) {$ENDIF}, nil, Result)); FDataHandle := TBDEDataSet(FDatalink.DataSet).Handle; finally DestroyTree; end; end;

Пытаемся снова перекомпилировать библиотеку. Наталкиваемся на уже известную ошибку с несоответствием формальных и фактических параметров в модуле DBFilter. Оказывается, в D5 введен новый тип TFieldMap. Появляется он в единственном месте - при вызове TExprParser.Create в функции TRxDBFilter.BuildTree модуля DBFilter.pas В этом месте пишем: FParser := TExprParser.Create(FDataLink.DataSet, Expr, TFilterOptions(FOptions) {$IFDEF RX_D4}, [], '', nil{$ENDIF} {$IFDEF RX_D5} , FldTypeMap {$ENDIF});

Идея данного изменения была получена одним из нас при анализе конструктора TExprParser (модуль DBCommon). Естественно, что для введения таких изменений необходимо иметь исходный текст VCL. В случае его отсутствия (по каким-либо причинам) здесь можно было бы поставить выброс исключения (для того, чтобы данный участок кода себя как-то проявил при работе, а не просто ничего не делал). Функциональности от такого изменения немного, но это лучше, чем ничего.

Архивируем и перекомпилируем библиотеку. Исправляем уже известные ошибки



Модуль LoginDlg.pas


Раздел implementation в функции TDBLoginDialog.OkBtnClick следует заменить тип переменной в секции var: {$IFDEF RX_D5} SaveLogin: TDatabaseLoginEvent; {$ELSE} SaveLogin: TLoginEvent; {$ENDIF}

Архивируем и перекомпилируем библиотеку.



Модуль Rx.inc.


В этом модуле содержится описание некоторых констант, обеспечивающих корректную обработку версий библиотеки и среды. Если версия библиотеки у нас не изменилась, то версия среды функционирования уже другая. Для обработки таких вещей Delphi вводит константу с именем VERXXX, где XXX - номер версии IDE. Для D5 константа версии - VER130. Эта константа немного нечитаема, поэтому в RxLib вводится ее своего рода дубликат RX_DX - где X - номер версии IDE. Сейчас в этом файле инициализируется константа RX_D4 (вообще говоря, должна инициализироваться, но так как номер версии компилятора сменился, то эта константа является неопределенной). По этой традиции мы добавляем константу RX_D5 сразу после {$IFDEF VER120} .. {$ENDIF}, учитывая, что номер версии компилятора VER130: {$IFDEF VER130} {Borland Delphi 5.0 } {$DEFINE RX_D3} {$DEFINE RX_D4} {$DEFINE RX_D5} {$ENDIF}

Номер версии компилятора может быть найден несколькими путями. Во-первых, порыться в справке. Во-вторых, методом проб и ошибок - делаем пустой проект, в нем пишем такой текст procedure Tform1.FormCreate(Sender: Tobject); var {$IFDEF VER130} a: Integer; {$ENDIF} begin a:=0; end;

и потом перебираем цифры в константе, пока не добьемся компиляции. Цифры могут быть только больше 120, так как 120 - уже относится к Delphi4. Вряд ли Inprise будет уменьшать эти цифры или увеличивать сразу намного. Если внимательно просмотреть файл Rx.inc, то можно увидеть аналогию: VER80 - Delphi1 VER90 - Delphi2 VER100 - Delphi3 VER110 - C++ Builder 3 VER120 - Delphi4

Ну, а Delphi5 может быть либо VER130, либо VER140 (если учесть появление C++ Builder 4). Поэтому вариантов для перебора не так уж и много.

На тот случай, если константа VER130 оказалась неопределенной (по каким-либо причинам), желательно исправить следующий далее по тексту вложенный IFDEF на такой {$IFNDEF VER80} { Delphi 1.0 } {$IFNDEF VER90} { Delphi 2.0 } {$IFNDEF VER93} { C++Builder 1.0 } {$DEFINE RX_D3} { Delphi 3.0 or higher } {$IFNDEF VER100} {$DEFINE RX_V110} { C++Builder 3.0 or higher } {$IFNDEF VER110} {$DEFINE RX_D4} { Delphi 4.0 or higher} // Добавлено {$IFNDEF VER120} {$DEFINE RX_D5} { Delphi 5.0 or higher} {$ENDIF} // конец добавления {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF}

Этот участок кода, если хорошенько вдуматься, обеспечивает определение константы RX_D5 в условиях компиляции в будущей версии IDE (скажем, в Delphi6). В этом случае библиотека должна уметь вести себя так же, как и в версии на номер ниже (пока что это смелое предположение в случае RxLib не срабатывало никогда - при переходах D1/D2, D2/D3, D3/D4, но в этом ее авторы не виноваты - всегда что-то менялось в VCL и в корне, - однако: это все же хорошая методика!)

Исправив данный модуль, архивируем библиотеку и пытаемся откомпилировать ее. Сразу натыкаемся на ошибку, гласящую о том, что оказывается неопределенной константа SdelphiKey. Ищем модуль где она расположена. Можно использовать любые средства поиска (от встроенных в Delphi, до внешних, или встроенных в OS). Нас интересует ее определение, поэтому необходимая строка поиска - <SdelphiKey = > и ищем все файлы, в которые эта строка входит. Таким образом находим модуль RxConst. Если бы эта константа не входила бы в RxLib, то можно было бы поискать ее в любом файле *.pas, *.inc (допустим в каталоге Source или вообще на всех локальных дисках). Однако в большинстве случаев с достаточной большой вероятностью можно предполагать какой областью диска можно ограничится для поиска. В том случае, если необходимый файл оказывается не найденным можно расширить область поиска или изменить строку поиска. Если и в этом случае нужное место не найдено, можно искать уже не только файлы *.pas, *.inc но и добавить к ним *.dcu, *.bpl, *.dpc или вообще *.*.



Модуль RxMemDS.pas.


В D5 у TDataset пропали функции BCDToCurr, CurrToBCD. В связи с этим у всех наследников этога класса недействительной является директива override. Если залезть в Help, то там можно прочитать следующие строки:

The global FMTBCDToCurr and CurrToFMTBCD routines have been replaced by the new BCDToCurr and CurrToBCD routines (and the corresponding protected methods on TDataSet have been replaced by the protected and undocumented DataConvert method).

Но в RxLib-то они есть!!! Чтобы они там и оставались мы просто убираем директиву override в соответствующих местах для класса TrxMemoryData. Это в описании функций function BCDToCurr(BCD: Pointer; var Curr: Currency): Boolean; {$IFNDEF RX_D5} override; {$ENDIF} function CurrToBCD(const Curr: Currency; BCD: Pointer; Precision, Decimals: Integer): Boolean; {$IFNDEF RX_D5} override; {$ENDIF}

В принципе, можно было бы просто удалить эти функции из библиотеки. Но мы условились только добавлять, а не удалять:

Архивируем и перекомпилируем библиотеку. И наталкиваемся на следующую ошибку.



Модуль RxRichEd.pas.


В RxLib при работе с D5 оказывается выброшенным описание типа TCharFormat2. Путем долгих поисков файла, в котором описывался бы этот тип, узнаем, что ни в одном *.pas, *.dcu его нет, но *.bpl он уже присутствует. Это кажется странным... Но ничего страшного в этом нет. Путем анализа кода выясняем, что эта структура должна входить в WinAPI. А там традиционно переназначение одного типа другому (по тому, как это делали авторы RxLib для Delphi3, это видно невооруженным взглядом). Поэтому, следуя таким традициям и определив доступность в данном месте типа TCharFormat2A, вставляем в начало раздела interface строки: {$IFDEF RX_D5} type TCharFormat2 = TCharFormat2A; {$ENDIF}

сразу после строки type TRichEditVersion = 1..3 или uses.

Архивируем и перекомпилируем библиотеку. И наталкиваемся на следующую ошибку.



Модуль SelDSFrm.pas


В D5 исчезла функция ShowDatasetDesigner. Она встречается в модуле SelDSFrm.pas в процедуре TMemDataSetEditor.ExecuteVerb. Ее прямую замену не удалось найти. Однако если заменить соответсвующее место на {$IFDEF RX_D5} Designer.Edit(GetIComponent); {$ELSE} ShowDatasetDesigner(Designer, TDataSet(Component)); {$ENDIF}

то вроде бы работает. По крайней мере ошибок в последствии мы обнаружили (у одного из нас один из проектов работает с TMemDataset, и в новой версии пока без глюков). Строка uses (неважно какого раздела. рекомендуется implementation, но можно и interface) для этого модуля должна быть также изменена - в нее нужно добывать модуль DsnDbCst. Этот модуль был найден описанным выше методом контекстного поиска. uses {$IFDEF WIN32} Windows, {$ELSE} WinProcs, WinTypes, {$ENDIF} SysUtils, Messages, Classes, Graphics, Controls, Forms, Dialogs, DB, StdCtrls, DsgnIntf, RxDsgn {$IFDEF RX_D5}, DsnDbCst{$ENDIF};

Архивируем и перекомпилируем библиотеку. И вроде бы все.

По переписке мы обнаружили еще одно решение - заменить вызов ShowDatasetDesigner на ShowFieldsEditor.



Далеко не все проекты могут


Далеко не все проекты могут быть или должны быть перекомпилированы новым компилятором, поэтому необходимо предусмотреть возможность одновременного использования пакетов runtime RxLib как адаптированной и не адаптированной версий. Известно, что по именам пакетов Delphi строит файлы bpl, являющимися на самом деле dll, которые могут быть вызваны пользовательскими программами. Поэтому достаточно переименовать модули пакетов (файлы с расширением bpk), и компилятор создаст новые, отличные по имени от неадаптированной версии, файлы соответствующих пакетов. Желательно это сделать с самого начала. Более того, рекомендуется откопировать файлы библиотеки в другой каталог и работать с ними, а для того, чтобы всегда можно было вернуться на шаг назад, после каждого исправленного модуля желательно архивировать копию файлов.

Модули пакетов rxctl4, rxdb4, dclrx4, dclrxdb4 переименовываем соответственно в rxctl5, rxdb5, dclrx5, dclrxdb5. Так же заменяем во всех переименованных модулях в секции requires все 4 на 5. (При использовании официальной версии, Delphi сделает часть этой работы сама при открытии основного модуля пакета в IDE. Однако Delphi исправляет только ссылки на пакеты VCL, входящие в стандартную поставку. Нам же необходимо поменять еще и ссылки на пакеты RxLib.)

Например, было requires VclDb40, VclMid40, rxctl4, Vclbde40;

стало requires VclDb50, VclMid50, rxctl5, Vclbde50;


Эта библиотека представляет интерес для


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

Простейшим примером применения OverPLAY может быть встраивание отчета с помощью компонентов QuickReports не внутрь исполняемого файла приложения, как это делается обычно, а в виде динамически загружаемой библиотеки - DLL. В этом случае при очередном изменении форм отчетности (что в настоящее время очень актуально для нашей страны ввиду весьма динамично меняющегося законодательства) можно предоставлять заказчику только новые версии этой библиотеки или другие дополнительные библиотеки, содержащие другие отчеты, без предоставления новой версии самого приложения.

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

Отметим, что разработавшая эту библиотеку рижская компания BatSoft - автор самой популярной в Латвии на сегодняшний день бухгалтерской программы, в которой реализованы идеи разбиения многофункционального приложения на приобретаемые отдельно модули и использован рассмотренный в данной статье инструментарий.


Некоторые полезные функции и классы


Класс TOleController реализует контроллер автоматизации, иногда удобный тем, что позволяет вызывать методы сервера автоматизации, имена которых заканчиваются символом "$".

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

TGIFImage позволяет читать и записывать графические данные в формате GIF. Свойства класса TGIFImage предоставляют доступ к характеристикам изображения. Класс TGIFImage поддерживает изображения, содержащие до 256 цветов, форматов GIF 87a и GIF 89a, включая графические расширения, такие как анимированное изображение, прозрачность и т.д. Имеется возможность рисовать изображения и отдельные кадры из анимированных изображений.

Для иллюстрации работы этих двух классов в комплекте поставки библиотеки имеется пример RX GIF Animator, позволяющий создавать анимированные изображения и напоминающий по функциональности Mcrosoft GIF Animator (рис. 14).

Рис.14. RX GIF Animator из комплекта поставки RX Library

Функция GetFormulaValue вычисляет результат математического выражения, заданного параметром Formula. Для вычислений используется объект класса TRxMathParser. Класс TRxMathParser, в свою очередь, представляет анализатор арифметических выражений, предоставляемых в виде строки.

Большое количество полезных функций имеется в модуле AppUtils, BDEUtils, FileUtil, MaxMin, VCLUtils. Перечислять их здесь не имеет смысла - они все подробно описаны в файле справки, поставляемой с библиотекой.



Некоторые полезные примеры


С библиотекой RX Library поставляется несколько примеров, иллюстрирующих применение компонентов и классов, входящих в ее состав.

Пример RX Library Demo Program иллюстрирует работу большинства компонентов (рисунки 2-11 данной статьи сделаны с использованием этого примера). Эта демонстрационная программа существует также в версии для C++Builder.

Пример RX GIF Animator позволяет создавать анимированные изображения в формате GIF и предназначен для иллюстрации классов, предназначенных для работы с этим форматом.

Особый интерес представляет утилита Database Explorer (имеющаяся в 16-и 32-разрядном вариантах, а также в варианте для C++Builder). Некоторые ее функциональные возможности имеются в SQL Explorer, но по сравнению с ним имеются и другие полезные возможности, например, трассировка SQL-предложений, экспорт и импорт данных и др. (рис. 15).

Рис.15. Утилита Database Explorer из комплекта поставки RX Library

Таким образом, библиотека RX Library предоставляет разработчикам набор весьма полезных компонентов, классов и функций, способных улучшить функциональность и пользовательский интерфейс приложений самого разнообразного назначения - от игр до сложных корпоративных прилжений, созданных с помощью всех версий Delphi и C++Builder.



Общие замечания.


Ликвидацию ошибок мы производили по мере их поступления в процессе компиляции. Однако это не значит, что в тексте они описаны в том же порядке (так как в процессе составления текста по сделанным записям вполне возможно, что часть описаний ликвидации ошибок изменили свои местоположения. Местами мы так же сгруппировали ошибки по типам, так как одна и та же ошибка возникала переодически в разных модулях и описание борьбы с ней было бы скучно читать и, тем более, писать). В данной статье мы остановимся на всех возникших в процессе адаптации ошибках, и попытаемся описать найденные нами способы их ликвидации. В основу адаптационной версии легла последняя доступная версия библиотеки RxLib - 2.6 + имеющиеся на текущий момент авторские fix'ы (RX260FIX.ZIP). Порядок установки библиотеки остался прежним. Он описан авторами в Readme.txt в разделе Install for Delphi 4. Именно этот порядок инсталляции и нужно использовать.

В статье мы обделили вниманием постоянно вылетающую ошибку, связанную с изменениями файлов dfm, возникающую при попытке Delphi прорисовать форму компилированного модуля, на форме которого присутствуют еще не проинсталлированные в среде компоненты RxLib. В случаях возникновения подобной ошибки предлагается просто игнорировать ее. Порой это утомительно, но ничего не поделаешь: В качестве альтернативы можно предложить компиляцию из командной строки, но большинство разработчиков в настоящее время считает это пещерным веком (хотя у компиляции из командной строки есть свои плюсы, например - скорость и меньшие требования к памяти).

Остается лишь заметить, что после ликвидации всех ошибок желательно заново перекомпилировать все пакеты. Не забудьте также поместить пакеты времени выполнения по пути, прописанным в переменной окружения PATH. Для программистов рекомендуется использовать каталог Windows\System32, но у вас могут быть свои взгляды на это дело: За основу желательно брать RxLib версии 2.6 + имеющиеся на текущий момент авторские fix'ы (RX260FIX.ZIP).



Демонстрационная версия доступна по адресу


Автор - Shauki Z. Baghdadi, Санкт-Петербург ().
Стоимость: $49.00
Демонстрационная версия доступна по адресу http://www.torry.ru/vcl/charts/param2d.zip
Компонент может быть использован в Delphi 1.0-3.0, C++Builder 1.0-3.0.
Поставляется в виде *.dcu и *.obj-файлов.

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



Рис. 14. Пример использования Parametric2D Drawing Components


PIE


torry\vcl\charts\pie.zip

Авторы - Стив Дэвис (Steve Davis), Фил Барбер (Phil Barber)
Стоимость: $20
Shareware-компонент.
Поставляется в виде *.dcu-файла для Delphi 2.0.

Компонент TPie предназначен для отображения круговых диаграмм. Позволяет выбрать цвета секторов диаграммы.

Рис. 12. Пример использования компонента TPie



Полезные компоненты для пользователей


Наталия Елманова
Компьютер Пресс - CD, 1999, N 10
& copy;Copyright N.Elmanova & ComputerPress Magazine.

Данная статья посвящена компонентам сторонних разработчиков для Delphi и С++Builder, предназначенным для получения информации об операционной системе и аппаратном обеспечении, управлении внешними устройствами и др. Значительная часть рассмотренных компонентов содержится на известном Web-сайте Torry Delphi Pages ().

Как всегда, напомним, что: Компоненты, поставляемые в виде исходных текстов на Pascal, как правило, можно использовать и в Delphi, и в C++Builder, в том числе в версиях более поздних, чем версия, для которой предназначен данный компонент. Компоненты, поставляемые в виде исходных текстов на C++, как правило, нельзя использовать в Delphi. Компоненты, поставляемые в виде файлов с расширениями *.dcu, *.obj, *.bpl, *.bpk, *.dpl, *.dpk, можно использовать только с теми версиями С++Builder и Delphi, для которых они предназначены.

Помимо этого, следует иметь в виду, что: Компоненты, содержащие динамически загружаемые библиотеки, сопровождаемые описанием их API, можно использовать практически в любом средстве разработки соответствующей разрядности, поддерживающем вызов функций из динамически загружаемых библиотек. Компоненты, содержащие или представляющие собой элементы управления ActiveX, можно использовать в любых средствах разработки, позволяющих применение ActiveX, а также, как правило, отображать в составе web-страниц с помощью Microsoft Internet Explorer версий не ниже 3.0 (если последнее позволяет лицензионное соглашение).

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

В данной статье рассмотрены следующие компоненты:



Библиотека компонентов Delphi VCL Extensions


Наталия Елманова.
Компьютер Пресс - CD, 1999, N 1
© Copyright N.Elmanova & ComputerPress Magazine.

Библиотека компонентов Delphi VCL Extensions (RX) Library, разработанная Федором Кожевниковым, Сергеем Королевым и Игорем Павлюком, представляет собой бесплатный свободно распространяемый (freeware) продукт, пользующийся заслуженной популярностью в течение трех лет как в нашей стране, так и за рубежом. По мнению наиболее квалифицированных разработчиков, анализировавших исходные тексты RX Library, компоненты и классы этой библиотеки практически не содержат ошибок.

Версия 2.50 этой библиотеки содержит более 60 визуальных и невизуальных компонентов, а также набор полезных классов и функций, включая исходные тексты всех модулей. В настоящее время она доступна по адресу http://www.torry.ru/vcl/packs/rxlib.zip. Там же лежат дополнения к этой версии (http://www.torry.ru/vcl/packs/rxfix.zip)

Данная версия этой библиотеки может быть использована со всеми имеющимися на сегодняшний день версиями Delphi (начиная с версии 1.0 и заканчивая версией 4.0) и С++Builder (версии 1.0 и 3.0). Библиотека также содержит файлы ресурсов для 15 языков, помимо русского и английского. Файл справки доступен на русском языке (по мнению зарубежных разработчиков, отсутствие англоязычной справки - самый серьезный недостаток данной библиотеки, но российские разработчики, я надеюсь, не очень пострадают от ее отсутствия).

После установки библиотеки в соответствии с прилагаемыми к ней инструкциями в палитре компонентов появятся три дополнительные страницы: RX Controls (управляющие элементы, рис. 1а), RX Tools (разнообразные полезные компоненты, в основном невизуальные, рис.1б) и RX DBAware (компоненты доступа к данным и отображения данных, рис. 1c). Рассмотрим эти компоненты более подробно.



a)



б)



c)

Рис.1. Компоненты из коллекции Delphi VCL Extensions (RX) Library.



Наталия Елманова Компьютер Пресс - CD, 1999, N3
© Copyright N.Elmanova & ComputerPress Magazine

Данная статья посвящена некоторым полезным компонентам сторонних разработчиков, предназначенных для использования в приложениях Delphi и С++Builder деловой и научной графики. Все эти компоненты (равно как и многие другие полезные компоненты и утилиты) можно найти на сайте Torry's Delphi Pages (http://www.torry.ru.) либо на регулярно выпускаемых авторами этого сайта компакт-дисках с его содержимым, материалы которых использованы при подготовке данной статьи.

При выборе тех или иных компонентов с целью использования их в своих приложениях следует иметь в виду, что: Компоненты, поставляемые в виде исходных текстов на Pascal, как правило, можно использовать и в Delphi, и в C++Builder, в том числе в версиях более поздних, чем версия, для которой предназначен данный компонент. Компоненты, поставляемые в виде исходных текстов на С++, как правило, нельзя использовать в Delphi. Компоненты, поставляемые в виде файлов с расширениями *.dcu, *.obj, *.bpl, *.bpk, *.dpl, *.dpk, можно использовать только с теми версиями С++Builder и Delphi, для которых они предназначены. Следует также внимательно ознакомиться с help-файлами и другими документами, сопровождающими эти компоненты (иногда они содержатся в виде комментариев в исходных текстах компонентов) - в них обычно содержатся правила использования свободно распространяемых компонентов (нередко их нельзя использовать в коммерческих продуктах) либо условия приобретения коммерческих компонентов.

В данной статье рассмотрены следующие компоненты: TeeChart-Pro LogGraph Scientific Chart Graph TTrend TScGraph Rot3D RChart PIE TObjGrapheur32




Наталия Елманова
Компьютер Пресс - CD, 1999, N 4
Copyright N.Elmanova & ComputerPress Magazine.

Данная статья - продолжение начатого в предыдущем номере обзора компонентов сторонних разработчиков, предназначенных для использования в приложениях Delphi и С++Builder деловой и научной графики. Отметим, что некоторые из продуктов, представленных в данной части этого обзора, могут быть полезны также пользователям Visual C++, Visual Basic, PowerBuilder и других средств разработки, так как представляют собой либо содержат в своем составе элементы управления ActiveX.

Еще раз напомним, что: Компоненты, поставляемые в виде исходных текстов на Pascal, как правило, можно использовать и в Delphi, и в C++Builder, в том числе в версиях более поздних, чем версия, для которой предназначен данный компонент. Компоненты, поставляемые в виде исходных текстов на С++, как правило, нельзя использовать в Delphi. Компоненты, поставляемые в виде файлов с расширениями *.dcu, *.obj, *.bpl, *.bpk, *.dpl, *.dpk, можно использовать только с теми версиями С++Builder и Delphi, для которых они предназначены. Помимо этого, следует иметь в виду, что: Компоненты, содержащие динамически загружаемые библиотеки, сопровождаемые описанием их API, можно использовать практически в любом средстве разработки соответствующей разрадности, поддерживающем вызов функций из динамически загружаемых библиотек. Компоненты, содержащие или представляющие собой элементы управления ActiveX, можно использовать в любых средствах разработки, позволяющих применение ActiveX, а также, как правило, отображать в составе web-страниц с помощью Microsoft Internet Explorer версий не ниже 3.0 (если последнее позволяет лицензионное соглашение). Следует также внимательно ознакомиться с help-файлами и другими документами, сопровождающими эти компоненты (иногда они содержатся в виде комментариев в исходных текстах компонентов) - в них обычно содержатся правила использования свободно распространяемых компонентов (нередко их нельзя использовать в коммерческих продуктах) либо условия приобретения коммерческих компонентов.

В данной статье рассмотрены следующие компоненты:



Наталия Елманова
Компьютер Пресс - CD, 1999, N 5
© Copyright N.Elmanova & ComputerPress Magazine.

Данная статья посвящена компонентам и утилитам сторонних разработчиков для Delphi и С++Builder, предназначенных для использования в Web-приложениях, Internet-клиентах или в составе Web-страниц. Отметим, что некоторые из продуктов, представленных в данной части этого обзора, могут быть полезны также пользователям Visual C++, Visual Basic, PowerBuilder и других средств разработки, так как представляют собой либо содержат в своем составе элементы управления ActiveX. Значительная часть рассмотренных компонентов содержится в виде ограниченных или демонстрационных версий на компакт-диске "Borland C++Builder 4 Companion Tools", входящем в комплект поставки Borland C++Builder 4 Enterprise.

В очередной раз напомним, что: Компоненты, поставляемые в виде исходных текстов на Pascal, как правило, можно использовать и в Delphi, и в C++Builder, в том числе в версиях более поздних, чем версия, для которой предназначен данный компонент. Компоненты, поставляемые в виде исходных текстов на C++, как правило, нельзя использовать в Delphi. Компоненты, поставляемые в виде файлов с расширениями *.dcu, *.obj, *.bpl, *.bpk, *.dpl, *.dpk, можно использовать только с теми версиями С++Builder и Delphi, для которых они предназначены.

Помимо этого, следует иметь в виду, что: Компоненты, содержащие динамически загружаемые библиотеки, сопровождаемые описанием их API, можно использовать практически в любом средстве разработки соответствующей разрадности, поддерживающем вызов функций из динамически загружаемых библиотек. Компоненты, содержащие или представляющие собой элементы управления ActiveX, можно использовать в любых средствах разработки, позволяющих применение ActiveX, а также, как правило, отображать в составе web-страниц с помощью Microsoft Internet Explorer версий не ниже 3.0 (если последнее позволяет лицензионное соглашение).

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

В данной статье рассмотрены следующие компоненты:



Полезные компоненты и утилиты


Наталия Елманова
Компьютер Пресс - CD, 1999, N 2
© Copyright N.Elmanova & ComputerPress Magazine.

Данная статья посвящена двум продуктам продуктам рижской компании BatSoft - библиотеке OverPLAY для Delphi и C++Builder, полезной при разработке модульных многофункциональных приложений, и утилите OverDig, позволяющей управлять серверными объектами IB Database.



PowerTCP Internet Toolkit



Разработчик - Dart Communications ()
Trial-версия с ограниченным сроком действия. Код для ее использования выдается после регистрации на сервере.
Trial-версия содержится также на диске Borland C++Builder 4 Companion Tools из комплекта поставки Borland C++Builder 4 Enterprise.
Последние версии доступны по адресам: ,

Компоненты PowerTCP позволяют создавать Internet-приложения с помощью широкого спектра средств разработки. В комплект поставки входят элементы управления ActiveX и VBX, библиотеки DLL, компоненты для Delphi, библиотеки для C++. Пакет PowerTCP поддерживает стандарты TCP, TELNET, FTP, SMTP, POP3, эмуляцию терминала VT320, SNMP, TFTP, UDP, HTTP, FINGER, REXEC, RLOGIN, RSHELL, TIME, WHOIS.

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

Рис. 1. Пример использования PowerTCP: использование протокола FTP

Рис. 2. Пример использования PowerTCP: обмен сообщениями с помощью протокола UDP

Рис. 3. Пример использования PowerTCP: почтовый клиент

Рис. 4. Пример использования PowerTCP: HTTP-клиент



Просмотр и редактирование данных и серверных объектов


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

Рис. 6. Просмотр и редактирование серверных объектов и табличных данных в OverPlay

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

Рис. 7. Копирование табличных данных в буфер обмена

Возможен также просмотр содержимого memo-полей в отдельных окнах.

Утилита OverDig содержит несколько различных редакторов серверных объектов. Редакторы триггеров и хранимых процедур способны выделять другим цветом или шрифтом синтаксические конструкции (так же как и редакторы кода Delphi и C++Builder).

Рис. 8. Редактор хранимых процедур

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



RChart


torry\vcl\charts\rchart.zip

Автор - Ханс Лонингер (Hans Lohninger, )
Стоимость: $20
Стоимость исходного текста: $150
Shareware-компонент. Trial-версия работает только при запущенных средах разработки Delphi или C++Builder. Поставляется в виде *.dcu-файлов для Delphi 1.0, 2.0, 3.0 и *.obj-файлов для С++Builder 1.0.
Последние версии доступны по адресу:

Компонент TRChart позволяет отображать двумерные графики. Он позволяет автоматически выбирать масштаб, использовать логарифмическую шкалу, создавать динамические графики для отображения быстро меняющихся значений, использовать в качестве значений переменные типа TDateTime, менять масштаб изображения с помощью мыши, добавлять маркеры, пояснительные надписи, прямоугольники, эллипсы, которые автоматически масштабируются и перемещаются при изменении масштаба графика. Обладает разнообразными возможностями, связанными с печатью графиков.

Этот компонент удостоен награды Delphi Choice '96, присуждаемой The Delphi Information Connection.

Рис. 10. Пример использования компонента TRСhart

Рис. 11. Пример установки параметров печати при использовании компонента TRСhart



Репозитарий объектов


OverDig позволяет создать репозитарий объектов, в котором с целью повторного использования хранятся исходные тексты DDL-предложений для их генерации. Репозитарий представляет собой таблицу формата Paradox, в memo-полях которой хранятся DDL-сценарии.

Рис. 13. Репозитарий объектов



Rot3D


torry\vcl\charts\Rot3D.zip

Автор - Ханс Лонингер (Hans Lohninger, ).
Стоимость: $15
Стоимость исходного текста: $100
Trial-версия работает только при запущенных средах разработки Delphi или C++Builder.
Поставляется в виде *.dcu-файлов для Delphi 1.0, 2.0, 3.0 и *.obj-файлов для С++Builder 1.0.
Последние версии доступны по адресу:

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

Рис. 9.Пример использования компонента TRot3D



RxConst.pas


В модуле RxConst.pas, видя как это было сделано авторами для Delph4, перед implementation добавляем строку для ключа реестра Delphi, соответствующей версии D5: {$IFDEF VER130} const SDelphiKey = 'Software\Borland\Delphi\5.0'; {$ENDIF}

Архивируем файлы и пытаемся компилировать. Дальше мы наталкиваемся на череду ошибок о несоответствии формальных и фактических параметров при вызове некоторых функций. Идем на место ближайшей ошибки, встаем на ошибочный вызов и, используя магическую комбинацию ctrl+shift+пробел получаем в подсказке типы ожидаемых параметров. Замечем, что там где подставляется переменная типа TComponentList на самом деле ожидается TDesignerSelectionList. C помощью описанной выше методики, находим модуль, в котором описана TDesignerSelectionList - это Contnrs. Добаляем его в строку uses. Во всех этих местах меняем соответствующий тип. При этом, чтобы уж во всем следовать хорошим традициям RxLib, мы не делаем замену текста, а вводим альтернативу с использованием описанной нами константы RX_D5. Для этого мы в секции var таких функций заменяем, допустим (в процедуре TSpeedbarEditor.SelectButton модуля SbEdit) FCompList: TComponentList на {$IFDEF RX_D5} FCompList: TDesignerSelectionList; {$ELSE} FCompList: TComponentList; {$ENDIF}

А в реализации функций соответствующие места изменяем по той же технологии - там где было FCompList := TComponentList.Create пишем {$IFDEF RX_D5} FCompList := TDesignerSelectionList.Create; {$ELSE} FCompList := TComponentList.Create; {$ENDIF}

Такие изменения потребуются сделать во всех функциях и процедурах, на которые проругается компилятор. Это в модулях PgMngrEd.pas, SbEdit.pas, TimLstEd.pas и RxCtlReg.pas. Произведя изменения в каждом модуле, архивируем всю библиотеку. По завершению работы с данной ошибкой, наталкиваемся на новую - опять несоответствие типа, но теперь уже в модуле BDEUtils.



Scientific Chart Graph


torry\vcl\charts\Graphwin.zip

Автор - Рой Хонг (Roy Hong, ).
Свободно распространяемый компонент, поставляется в виде *.obj-файла для С++Builder 1.0 без исходного текста.

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

Рис. 4. Пример использования компонента TGraphWin



Шифрование текстов триггеров и хранимых процедур


OverDig позволяет зашифровать тексты триггеров и хранимых процедур так, чтобы они были недоступны другим пользователям, что нередко бывает удобно при поставке IB Database вместе с базой данный в качестве встроенного сервера в составе готовой информационной системы. Зашифрованные объекты хранятся в базе данных вместо исходных объектов, и их исходный текст доступен после ввода пароля.

Рис. 14. Шифорвание текстов серверных объектов



в виде исходных текстов. Simple


Автор - Сергей Подьячев, Новосибирск ( .).
Свободно распространяемый набор компонентов.
Доступен по адресу ,
Компоненты могут быть использованы в Delphi 2.0-4.0, C++Builder 1.0-3.0.
Поставляются в виде исходных текстов. Simple

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



Рис. 15. Пример использования Simple Graph


Создание модульных приложений с помощью OverPLAY


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

При создании многофункционального приложения с использованием OverPLAY следует спланировать разделение функций приложения между модулями, учитывая зависимость между ними - зависящие друг от друга функции имеет смысл поместить в один модуль.

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

Рис. 2. Главная форма исполняемого файла, использующего компоненты OverPLAY

Далее следует создать дополнительно загружаемые модули - DLL. Такой модуль должен содержать скрытую форму, на которой должен быть помещен компонент TDLLServer, и в секции инициализации библиотеки следует присвоить имя этой формы глобальной переменной OverPlayMainForm (библиотека поставляется с нескольким примерами различной степени сложности, где можно найти образцы соответствующего кода, и весьма подробной справкой, содержащей, помимо общепринятого в таких случаях описания классов и компонентов, советы по созданию модульных приложений).

Рис. 3. Скрытая форма дополнительно загружаемого модуля

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

Рис. 4. Приложение, использующее дополнительно загружаемые модули, на этапе выполнения

Рис. 5. Список зарегистрированных дополнительных модулей и содержащихся в них задач

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

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



Страница RX Controls


На странице RX Controls содержатся разнообразные управляющие элементы, представляющие собой в большинстве своем расширения стандартных интерфейсных элементов, способные украсить приложение и улучшить его пользовательский интерфейс. В частности, она содержит несколько любопытных расширений обычного поля редактирования, например, компонент для ввода даты TDateEdit, поле редактирования, в которое можно поместить результат расчета на всплывающем калькуляторе TСalcEdit, компоненты для ввода имен файлов и каталогов, позволяющие как непосредственно ввести их, так и выбрать с помощью стандартного диалога Windows, специальный компонент для ввода денежных величин и некоторые другие полезные компоненты, представляющие вариации на тему однострочного редактора текста. Следует заметить, что применение большинства из них может быть весьма полезным, например, в финансовых и бухгалтерских приложений (рис. 2).

Рис.2. Вариации на тему полей редактирования

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

Рис.3. Переключатели и комбинированные списки

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

Рис.4. Некоторые компоненты страницы RX Controls, способные пригодиться разработчикам игр

Страница RX Tools

Страница компонентов RX Tools содержит различные полезные компоненты, способные упростить создание пользовательских интерфейсов. Среди них следует особо отметить невизуальный компонент TPageManager, позволяющий создавать серии сменяющих друг друга форм наподобие используемых серий форм в некоторых экспертах Delphi и C++Builder (рис. 5).

Рис.5. Одна из сменяющихся форм, созданных с помощью компонента TPageManager

Еще один полезный компонент страницы RX Tools - TSpeedBar - настраиваемая инструментальная панель, позволяющая пользователю с помощью операции drag-and-drop перетаскивать кнопки из предусмотренного разработчиком набора, отображаемого в интуитивно понятном диалоге, на инструментальную панель (рис. 6).

Рис.6. Диалог, сгенерированный компонентом TSpeedBar

Весьма интересен также компонент TClipboardViewer, предназначенный для просмотра содержимого буфера обмена, независимо от типа содержащихся в нем данных. Отметим, что весьма полезная утилита просмотра содержимого буфера, существовавшая в Windows 3.1 и куда-то исчезнувшая в Windows 95/98/NT, может быть создана с использованием этого компонента буквально за минуту (рис. 7).

Рис.7. Компонент TClipboardViewer

Весьма интересен также компонент TDualListDialog - двойной список с перемещаемыми элементами (подобные диалоговые панели нередко используются в средах разработки Delphi и C++Builder, рис. 8).

Рис.8. Диалог, сгенерированный невизуальным компонентом TDualListDialog

Из других компонентов отметим также TFormPlacement и TFormStorage - невизуальные компоненты, которые позволяют хранить сведения о состоянии и размере содержащей их формы, а также сведения о текущих значениях свойств компонентов, находящихся на ней, во внешнем ini-файле, TPicClip - массив битовых изображений, TSecretPanel - панель, позволяющую разместить, помимо обычных визуальных элементов, скрытое изображение или текст, причем последний может циклически прокручиваться (рис. 9).

Рис.9. Компоненты TPicClip и TSecretPanel

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

Еще один невизуальный компонент - TAppEvents - предназначен для создания в режиме дизайна формы обработчиков событий TApplication и задания значения некоторых свойств TApplication.

Весьма интересны также TRxMainMenu и TRxPopupMenu - аналоги обычных компонентов для отображения меню, используемых в Delphi и C++Builder, и позволяющие добавлять к пунктам меню графические изображения. Пользователям Delphi 4 они могут показаться не представляющими интереса, однако напомним, что и эти, и другие компоненты работоспособны во всех версиях Delphi и C++Builder, начиная с первой версии Delphi, а рынок приложений, нетребовательных к ресурсам рабочих станций, в том числе 16-разрядных, в нашей стране пока еще достаточно велик.



Страница RX DBAware


Эта страница содержит компоненты доступа к данным и отображения данных, расширяющие возможности, предоставляемые обычными компонентами Data Access и Data Controls.

Из невизуальных компонентов следует отметить компонент TRxQuery , авляющийся наследником TQuery и обладающий дополнительным свойством Macros, позволяющим во время выполнения изменять текст запроса, например, заменив предложение WHERE или ORDER BY, что практически невозможно сделать, используя стандартные параметризованные запросы, генерируемые компонентом TQuery (рис. 10).

Рис.10. Пример использования компонента TRxQuery: на этапе выполнения можно изменить порядок сортировки и условия отбора записей

Компонент TSQLScript предназначен для выполнения наборов из нескольких SQL-предложений. Если база данных, в которой эти предложения выполняются, позволяет использовать транзакции, этот компонент позволяет определить, за одну или за несколько транзакций эти предложения выполняются.

Компонент TMemoryTable предназначен для создания небольших таблиц в оперативной памяти. Использование таких таблиц бывает необходимо в том случае, когда требуется высокая скорость доступа к содержащимся в низ данным.

Компонент TQBEQuery позволяет работать с запросами формата QBE, используемого в Database Desktop и Corel Paradox.

Компонент TRxDBFilter реализует возможность наложения фильтров на курсор (набор данных, передаваемый на рабочую станцию), без применения дополнительных запросов. Преимущество фильтров в их быстродействии и отсутствии доплнительных обращений к серверу баз данных, что может оказаться необходимым в тех случаях, когда требуется многократно динамически изменять условия отбора записей. Фильтр может накладываться на любой набор данных, как TTable, так и TQuery или TQBEQuery, при этом наличие индексов для полей, на которые накладываются условия, не требуется (рис. 11).

Рис.11. Пример использования компонента TRxDBFilter: на этапе выполнения можно изменить условия фильтрации записей.

Компонент TDBSecurity предоставляет два диалога, которые являются общепринятыми в приложениях, работающих с базами данных: диалог регистрации пользователя и диалог смены пароля пользователя. Он также также может заблокировать приложение, минимизировав его, и потребовать от пользователя пароль для его разблокировки.

Еще три компонента позволяют осуществить доступ к объектам доступных баз данных. Компонент TBDEItems предоставляет доступ к спискам всех доступных баз данных (включая псевдонимы), драйверов баз данных или языковых драйверов (в зависимости от значения свойства ItemType), доступ к которому осуществляется как к обычной таблице. Компонент TDatabaseItems предоставляет доступ к спискам объектов (таблиц, файлов или хранимых процедур) базы данных в виде набора данных, доступ к которому осуществляется как к обычной таблице. Компонента TTableItems предоставляет доступ к списку элементов (полей, индексов, правил ссылочной целостности и т.д.) в виде набора данных, доступ к которому осуществляется как к обычной таблице.

Компонент TDBProgress иcпользует Callback-функции IDAPI для сообщения о ходе выполнения длительных операций с базами данных.

Из визуальных компонентов следует отметить компонент TRxDBGrid - наследник TDBGrid, позволяющий отображать BLOB-поля базы данных в виде пиктограмм, изменить цвет шрифта и фона любой ячейки таблицы (либо любой ее строки или столбца) в зависимости от значения поля или имени поля набора данных, сохранять и восстанавливать порядок и ширину столбцов в INI-файле или в реестре, а также выбирать несколько записей. Заголовки колонок этого компонента могут быть с помощью использованы как кнопки, например, для изменения порядка сортировки отображаемых данных. Можно также зафиксировать в компоненте TRxDBGrid несколько первых колонок (рис. 12).

Рис.12. Пример использования компонента TRxDBGrid

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

Еще один полезный визуальный компонент - TDBIndexCombo, выводящий комбинированный список индексов таблицы, позволяя пользователю менять порядок сортировки записей в наборе данных, полученном на основе таблицы.

Компонент TRxDBLookupCombo почти полностью аналогичен компоненту TDBLookupCombo, но позволяет использовать в качестве свойства LookupSource любой источник данных - как TTable, так и TQuery, при этом свойство LookupField не обязательно должно быть индексированным полем. Он также позволяет производить поиск нужной записи при наборе первых нескольких символов. Этот компонент также позволяет задать изображения для рисования в левой части каждой строки списка, в зависимости от содержимого полей базы данных (рис. 13).

Рис.13. Пример использования компонентов TDBIndexCombo и TRxDBLookupCombo

Помимо рассмотренных визуальных компонентов для отображения данных, библиотека содержит также разнообразные поля редактирования, в некоторых случаях аналогичные компонентам со страницы RX Controls (TRxDBCalcEdit, TDBDateEdit и др.)



Демонстрационная версия доступна по адресу


Автор - Nagy Kamel Awadallah, Египет ().
Стоимость: $10.00
Стоимость исходного текста: $15
Демонстрационная версия доступна по адресу Компонент может быть использован в Delphi 2.0. Поставляется в виде *.dcu-файла.

T3CDCanvas 1.00 - компонент, предназначенный для отображения трехмерных объектов и графиков. Объекты определяются координатами точек и линиями, их соединяющими, а также положением наблюдателя относительно объекта.



Рис. 12. Пример использования TC3DCanvas: изображение объекта в разных проекциях



Рис. 13. Пример использования TC3DCanvas: график функции двух переменных


TAutoRelaunchApplication


Torry\vcl\system\autorel.zip

Разработчик - Legitima Software (Frank Dekervel, ).
Стоимость - $10
Shareware-версия выдает сообщение о необходимости приобретения при запуске использующего ее приложения.
Последние версии доступны по адресу: ,

TAutoRelaunchApplication - невизуальный компонент, заставляющий содержащее его приложение автоматически запускаться, если во время его работы происходит перезагрузка Windows 95 / 98 / NT.

Рис. 2. Пример использования TAutoRelaunchApplication



Демонстрационный пример использования коммерческого компонента


Torry\vcl\system\chng.zip

Автор - Chirag Dalal (Индия),
Демонстрационный пример использования коммерческого компонента
Cтоимость - $10 без исходного текста, $25 - с исходным текстом
Педназначен для использования только в Windows 95.
Последние версии доступны по адресу ,

Компонент позволяет следить за системными папками Windows, такими как Desktop, Fonts, Network Neighborhood, Personal, Programs, Recent Documents, Send To, Start Menu, Startup, Templates, Favorites и уведомлять пользователя о произошедших в них изменениях (создании или переименовании содержащихся в них файлах, создании каталогов, изменении атрибутов файлов, модификации файлов и др.).





Рис. 11. Пример использования TChangeMonitor


Последние версии доступны по адресу



Автор - Troels Jakobsen ()
Свободно распространяемый компонент.
Поставляется с исходным текстом
Последние версии доступны по адресу

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



Рис. 9. Пример использования TCoolTrayIcon


TCPUID


Torry\vcl\system\cpuid.zip

Разработчик - Gordon Bamber ().
Стоимость - $25.
Поставляется с исходным текстом
Последние версии доступны по адресу: ,

Этот компонент предназначен для определения характеристик используемого процессора. Позволяет определить тип процессора, тактовую частоту и другие характеристики.

Рис. 3. Пример использования TCPUID.



Исходный текст компонента предоставляется после


Автор - Вит Ковальчик (Vit Kovalchik, ).
Стоимость: $10.00
Исходный текст компонента предоставляется после приобретения.
Демонстрационная версия доступна по адресу
Компонент может быть использован в Delphi 3.0, 4.0.
Последние версии этого компонента доступны по адресу

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



Рис. 11. Пример использования TEasyGraph


TeeChart-Pro


torry\vcl\charts\Teechart.exe, torry\vcl\charts\teedemo.zip
- trial-версия для Delphi 4
- trial-версия для C++Builder 3.
- trial-версия для Delphi 1,2
- trial-версия для Delphi 3
- trial-версия для C++Builder 1.

Автор: Дэвид Бернеда (David Berneda, ).
Стоимость: $99
Shareware-компоненты. Trial-версии работают только при запущенных средах разработки Delphi или C++Builder.
Последние версии доступны по адресу:

Компоненты TeeChart знакомы всем пользователям последних версий Delphi и C++Builder - они входят в состав этих продуктов. Версия этих компонентов TeeChart-Pro, поставляемая отдельно, обладает рядом дополнительных возможностей. В частности, при использовании профессиональной версии возможно использование редактора свойств графика не только из среды разработки, но и из готового использующего его приложения. Помимо этого, пользователям профессиональной версии продукта доступны некоторые дополнительные типы графиков:"Candle", "ErrorBar", "Volume", "Surface", "Polar" (два последних представлены на рисунках ниже):

Рис. 1. Тип серий "Surface" (TeeChart Pro)

Рис. 2. Тип серий "Polar" (TeeChart Pro)

Отметим также, что в состав профессиональной версии TeeChart входит подробное руководство по созданию собственных типов серий.



с исходным текстом. Версия предназначена


Torry\vcl\system\finwin16.zip, findwin.zip
, findwin.zip
Автор - Dr. Peter Plass ()
Свободно распространяемый компонент.
Поставляется с исходным текстом. Версия предназначена для использования в Delphi 1.0, 3.0
Последние версии доступны по адресу ,

Этот компонент позволяет получить информацию о запущенных приложениях и открытых окнах.



Рис. 10. Пример использования TFindWin


THTMLLite


HTMLLITE.EXE

Разработчик - Дэвид Болдуин (David Baldwin),
Freeware-компоненты. Для вывода GIF-изображений используют графическую shareware- библиотеку ImageLib, правила лицензирования которой доступны по адресу StarrMT@po4.bb.unisys.com
Последние версии доступны по адресу: ,

Компонент THtmlLite позволяет отображать HTML-документы в Delphi-приложениях. Он напоминает компоненты THtmlViewer и TFrameViewer, но обладает меньшими функциональными возможностями. Может быть использован бесплатно.

Компонент поддерживает все версии Delphi. Позволяет использовать графические изображения форматов BMP,GIF,JPEG, в том числе прозрачные изображения, гиперграфику, таблицы и формы, фоновые изображения. Возможен контекстный поиск внутри документа. В отличие от THtmlViewer и TFrameViewer, не поддерживает форматированный вывод документов на принтер и использование фреймов. Поставляется без исходного текста.

Рис. 12. Пример использования THTMLLite



выдающей сообщения об этом при


THTM1S.ZIP - версия для Delphi 1
THTM2S.ZIP - версия для Delphi 2
THTM3S.ZIP - версия для Delphi 3
(либо Torry's Delphi Pages, torry/vcl/internet/thtm1s.zip, thtm2s.zip, thtm3s.zip)

Разработчик - Дэвид Болдуин (David Baldwin),
Компонент существуют в виде shareware-версии ( выдающей сообщения об этом при использовании графических изображений) и коммерческой версии, содержащей исходный код и лицензию на право использования в исполняемых файлах. Используют графическую shareware- библиотеку ImageLib, правила лицензирования которой доступны по адресу
Последние версии доступны по адресу: ,

Компоненты THtmlViewer и TFrameViewer предназначены для отображения HTML-документов в приложениях Delphi. TFrameViewer позволяет отобразить несколько документов в различных фреймах внутри одного окна. Эти компоненты позволяют отображать документы, содержащие графические изображения,(Bitmap, GIF, PNG, JPEG), в том числе прозрачные изображения, таблицы, гиперграфические изображения, формы, фоновые рисунки. Возможен контекстный поиск внутри текста.



Рис. 10. Пример использования THTMLViewer и TFrameViewer

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



Рис. 11. Пример диалога настройки параметров отображения текста в THTMLViewer


Последние версии доступны по адресу:


hyperl.zip (либо Torry's Delphi Pages, torry/vcl/internet/hyperl.zip)

Разработчик - Тойво Ледьярв (Toivo Leedjarv, )
Freeware-компонент.
Последние версии доступны по адресу:

Компонент THyperLink предназначен для добавления гипертекстовых ссылок на форму Windows- приложений. Крайне прост в использовании.



Рис. 13. Пример использования THyperLink


TLastUsed


http://www.torry.ru/vcl/system/lastused.zip
Разработчик - Edwin van Driel (WestSide SoftWare, ).
Свободно распространяемый (freeware) компонент.
Имеются версии для Delphi 2-3.
Последние версии доступны по адресу: -

Этот компонент предназначен для анализа файловой системы. Он сканирует указанный каталог и находит файлы, обращение к которым не производилось после указанной даты. Данный компонент только находит файлы, но не удаляет их.

Рис. 4. Пример использования TLastUsed.



TLogGraph


torry\vcl\charts\Loggraph.zip
- более новая версия -

Автор - Вит Ковальчик (Vit Kovalchik, ).
Свободно распространяемый компонент, поставляется с исходным текстом. Может быть использован в Delphi 2.0, 3.0, 4.0.
Последние версии этого компонента доступны по адресу

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

Рис. 3. Пример использования компонента TLogGraph



Этот компонент позволяет отображать данные


torry\vcl\charts\Graphe32.zip - версия для Delphi 2,
torry\vcl\charts\grapheur.zip - версия для Delphi 1

Автор - Лоран Рулье (Laurent Rullier, )
Свободно распространяемый компонент. Поставляется в виде *.dcu-файлов для Delphi 1.0, 2.0

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

Рис. 13. Пример использования компонента TObjGrapheur32


TProgman


Разработчик - Andrew McLean, AEROSOFT (Sydney, Australia)
Свободно распространяемый компонент.
Поставляется с исходным текстом
Последние версии доступны по адресу: - www.torry.ru,

Компонент предназначен для создания программных групп и ярлыков приложений.

Рис. 8. Пример использования TProgman



TScGraph


torry\vcl\charts\Scgraph2.zip - версия для Delphi 2
Scgraph3.zip () - версия для Delphi 3
Scgraph4.zip () - версия для Delphi 4

Автор - Роберт Новотны (Robert Novotny, ).
Свободно распространяемый компонент, поставляется в виде dcu-файлов для Delphi 2, 3, 4. Условия его использования запрещают включение этого компонента в коммерческие продукты.

Данный компонент предназначен для отображения графиков функций в виде линий или отдельных точек (в том числе с погрешностями). Он позволяет отображать 6 серий данных. Максимальное число точек в каждой серии - 600. Компонент позволяет использовать греческие буквы в метках, размещать легенду в различных местах графика, изображать несколько графиков вместе, использовать логарифмический масштаб.

Рис. 7. Пример использования компонента TScGraph

Рис. 8. Пример использования компонента TScGraph для изображения двух синхронных графиков



TTcpSock


(или Torry's Delphi Pages, torry/vcl/internet/tcpsock.zip)

Разработчик - Giles Biddison ().
Стоимость - $25.
Поставляется с исходным текстом
Последние версии доступны по адресу:

Компонент TTcpSock предназначен для использования в приложениях протокола TCP/IP и организации удаленного доступа с его помощью.

Рис. 7. Пример использования TtcpSocket: сервер и удаленный клиент.



TTrend


torry\vcl\charts\Trend.zip

Автор - Марк Додсон (Mark Dodson, ).
Свободно распространяемый компонент, поставляется с исходным текстом.
Последние версии этого компонента доступны по адресу:

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

Рис. 5. Пример использования компонента TGraphWin

Рис. 6. Пример использования компонента TTrend для изображения двух серий



Последние версии доступны по адресу:


Torry\vcl\system\apithing.zip

Разработчик - Tim Victor ()
Свободно распространяемый компонент.
Поставляется в виде *.dcu-файла.
Последние версии доступны по адресу:

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









Рис. 1. Пример использования TtvAPIThing


Бесплатная версия, требующая разрешения автора


(или Torry's Delphi Pages, torry/vcl/internet/udpsocket.zip)

Разработчик - Франк ДеКервел (Frank Dekervel, ).
Бесплатная версия, требующая разрешения автора на использование в коммерческих продуктах.
Последние версии доступны по адресу: ,

TudpSocket предназначен для использования в приложениях протокола UDP. Позволяет пересылать данные в сети, рассылать сообщения в подсетях, создавать приложения типа WinPopup.



Рис. 5. Пример использования TudpSocket: приложение для обмена сообщениями



Рис. 6. Пример использования TudpSocket: приложение для рассылки сообщений в подсети.


TWebLink



(либо Torry's Delphi Pages, torry/vcl/internet/weblink1.zip)

Разработчик - HyperAct, Inc.
Стоимость - $39.
Поставляется с исходным текстом
Имеется shareware-версия, работающая только под управлением среды разработки Delphi.
Последние версии доступны по адресу: - ,

Компонент HyperAct WebLink предназначен для управления Web-браузером. С его помощью можно дать команду браузеру загрузить документ из Internet по его URL и отобразить его. WebLink позволяет использовать механизм drag-and-drop для открытия документов. Поддерживает все наиболее часто используемые в Windows браузеры, включая Netscape Navigator, Microsoft Internet Explorer, Quarterdeck Mosaic, Spyglass Mosaic, NCSA Mosaic.

Рис. 14. Пример использования TWebLink

Координаты автора:



компонент работоспособен только при запущенной


Torry\vcl\system\wheelms.zip
http://www.torry.ru/vcl/system/Wheelms.zip
Разработчик - Simon Page (, )
Trial-версия ( компонент работоспособен только при запущенной среде разработки).
Стоимость - $18
Последние версии доступны по адресам: ,

Еще один компонент для поддержки Intellimouse в Delphi 2 и Delphi 3. Позволяет выбирать, какие из компонентов, содержащих полосы прокрутки, поддерживают Intellimouse, а также менять скорость перемещения текста при вращении колеса.

Рис. 7. Пример использования TWheelMouse (все представленные интерфейсные элементы действительно работают с Intellimouse).


TWHForm2HTML


Разработчик - HREF Tools Corp.
Стоимость - $99.00
Имеется shareware-версия, поддерживающая не более 8 элементов управления на форме (содержится на диске Borland C++Builder 4 Companion Tools из комплекта поставки Borland C++Builder 4 Enterprise).
Имеются версии для Delphi 2-4, C++Builder 1-4.
Последние версии доступны по адресу: -

TWHForm2HTML позволяет создать HTML-форму на основе формы Delphi или C++Builder как на этапе проектирования, так и на этапе выполнения. Поддерживает использование в таких формах следующих компонентов: TLabel (или любые наследники TCustomLabel) TMemo (или любые наследники TCustomMemo) TEdit (или любые наследники TCustomEdit) TCheckBox (или любые наследники TCustomChecBox) TRadioButton TComboBox (или любые наследники TCustomComboBox) TListBox (или любые наследники TCustomListBox) TButton TImage TRadioGroup (или любые наследники TCustomRadioGroup) TForm (или любые наследники TCustomForm) TGroupBox (или любые наследники TCustomGroupBox) TPanel (или любые наследники TCustomPanel) - любые контейнеры - наследники TWinControl

Рис. 8. Форма с TWHForm2HTML

Рис. 9. Эта же форма, преобразованная в формат HTML, с помощью компонента TWHForm2HTML



Утилита OverDig 2.0 для управления серверными объектами IB Database


Утилита OverDig, также разработанная компанией BatSoft, представляет собой инструмент, облегчающий управление объектами сервера IB Database, такими как триггеры, хранимые процедуры, представления, домены, исключения, генераторы. Эта утилита может быть весьма полезна разработчикам приложений, использующих этот сервер в качестве встроенной СУБД в составе своих приложений. Trial-версию этой утилиты можно найти на web-сайте компании BatSoft www.batsoft.com.



Вместо предисловия


Хочется отметить, что, несмотря на заголовок, статья посвящена гораздо более глубокой теме, нежели модификация компонентов RxLibrary.

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

Данная статья публикуется с согласия авторов RXLibrary. Для всех, кого интересует развитие этой библиотеки, сообщаем, что авторы собираются поддерживать ее и дальше, и в настоящее время практически закончена работа над версией для Delphi 5.

Версия RX для Delphi5 будет доступна на сайте в ближайшее время.

Лена Филиппова



Долгожданная пятая версия Delphi, обрадовав


Долгожданная пятая версия Delphi, обрадовав своим появлением на свет всех своих поклонников, к сожалению, многих разочаровала. Практически по одной единственной причине - проекты, сделанные (или начатые) в предыдущей версии, не поддаются перекомпиляции. Проблема кроется в большом количестве изменений в новой версии библиотеки VCL. Inprise предоставил документацию об изменениях, предложил пути переделки таковых проектов. Но что делать с библиотеками компонентов от сторонних производителей? Ждать, пока авторы предоставят upgrade? Копаться в чужих текстах самостоятельно? А если текстов нет? Ну, здесь уж точно, никто, кроме авторов не поможет.
Стоит ли говорить о всемирной популярности библиотекиRxLib? Редкий программист на Делфи обходится без этих замечательных компонентов. И: о горе! Библиотека RxLib, как и все прочие, не поддалась перекомпиляции "с налету". А непомерно огромное количество ошибок, выдаваемое компилятором, при самостоятельных попытках адаптации, остановило на этом пути десятки пытавшихся. Хотя были и победители! ("Вьетнамци николы нэ здаються!" :))
Данной статьей мы желаем показать (на примере RxLib) как возможно преодолеть подобные трудности, какие подходы для этого могут быть использованы. Мы не претендуем на "конечную истину" в наших решениях - это не единственно возможное, и, может быть, не самое лучшее. У одного из нас при написании этой статьи использовался Delphi 5 Evaluation без исходных текстов VCL, в которые можно было бы подсмотреть реализацию некоторых участков библиотеки, и со справкой, являющейся переходной между Delphi4 и Delphi5, в которой также отсутствовала достоверная информация по ряду моментов. Но наши решения и наши методы работают, и они сослужили добрую службу многим, кто ими воспользовался.
Наша статья рассчитана, в первую очередь, на тех начинающих (или продолжающих) программистов, которым не хватает опыта (или смелости?) внесения изменений в чужой исходный текст большого размера, и в то же время на тех, кто имеет желание научится разбираться в таких проблемах.
Мы предлагаем им проделать этот путь вместе с нами и надеемся, что в процессе адаптации они приобретут этот опыт и избавятся от боязни "чужих" текстов. Такой опыт несомненно пригодится им в дальнейшей работе.

после успешной инсталляции, начинаем компилировать


Теперь, после успешной инсталляции, начинаем компилировать все доступные проекты, использующие RxLib. У нас остались только ошибки RunTime, но они могут проявится лишь в тех случаях, когда: (даже не знаем, когда - одному богу известно!). Однако, по переписке с другими людьми, так же имевшими опыт подобной адаптации, мы узнали, что ряд мест в библиотеке работает неправильно в Delphi5. Вы можете сразу натолкнуться на них, а можете не встретиться с ними никогда (а это достаточно долго). Так, метод класса TownerDrawComboBox (модуль RxCombos.pas), предка T{Color|Font}ComboBox'ов, содержал вызов процедуры ResetItemHeight, которая, содержит строку "inherited ItemHeight := H;", вызывающую зацикливание в D5 и, как следствие, переполнение стека.
Эту строку следует удалить, тем более что и без нее все прекрасно работает.
Таким образом, для устранения таких неприятностей, как невозможность откомпилировать что-то в новой версии компилятора нами были использованы следующие методы: Контекстный поиск строки в файлах *.pas, *.inc, *.dcu, *.bpl, *.*. Этот поиск нужно использовать с "головой". То есть, на этом можно потерять достаточно много времени, если задать слишком широкую область поиска или слишком общую маску. Магическую комбинацию ctrl+shift+пробел. Очень ценное введение, появившееся еще в Delphi4. Мы используем его всегда и во всех разработках. Принцип разумной достаточности. Не нужно чего-то придумывать, если простое приведение типа является достаточным. Если мы не знаем на что что-то заменить, но знаем что это что-то должно делать, ищем что-нибудь другое, что делает то-же самое. Принцип аналогии. Если что-то делается, это должно делаться однообразно. Кстати, хороший стиль программирования основывается на однообразии методов, описаний, способа кодирования и т.д. Человек, который сначала пишет CloseWindowEx, потом closewindowex, а потом CloseWindowSex, при этом постоянно меняя ширину отступов и т.п - не имеет хорошего стиля программирования, потому что не имеет стиля вообще. Но это - тема отдельной статьи: Пошаговая компиляция с архивированием исходных модулей.