link5040 link5041 link5042 link5043 link5044 link5045 link5046 link5047 link5048 link5049 link5050 link5051 link5052 link5053 link5054 link5055 link5056 link5057 link5058 link5059 link5060 link5061 link5062 link5063 link5064 link5065 link5066 link5067 link5068 link5069 link5070 link5071 link5072 link5073 link5074 link5075 link5076 link5077 link5078 link5079 link5080 link5081 link5082 link5083 link5084 link5085 link5086 link5087 link5088 link5089 link5090 link5091 link5092 link5093 link5094 link5095 link5096 link5097 link5098 link5099 link5100 link5101 link5102 link5103 link5104 link5105 link5106 link5107 link5108 link5109 link5110 link5111 link5112 link5113 link5114 link5115 link5116 link5117 link5118 link5119 link5120 link5121 link5122 link5123 link5124 link5125 link5126 link5127 link5128 link5129 link5130 link5131 link5132 link5133 link5134 link5135 link5136 link5137 link5138 link5139 link5140 link5141 link5142 link5143 link5144 link5145 link5146 link5147 link5148 link5149 link5150 link5151 link5152 link5153 link5154 link5155 link5156 link5157 link5158 link5159 link5160 link5161 link5162 link5163 link5164 link5165 link5166 link5167 link5168 link5169 link5170 link5171 link5172 link5173 link5174 link5175 link5176 link5177 link5178 link5179 link5180 link5181 link5182 link5183

Полезные компоненты для пользователей Delphi и С++Builder:
Delphi VCL Extensions (RX) Lib v 2.50

Наталия Елманова.
Компьютер Пресс — 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.

Страница 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 и др.)

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

Класс 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.