Блог → Краткий обзор полезных компонентов для Delphi. Часть 2

Итак, я продолжаю знакомить вас с полезными Delphi-компонентами, и на очереди ещё два очень интересных продукта - LMD-Tools и GLAD. Уверен, что даже если ни один из них не пригодится вам в работе, узнать об их существовании, тем не менее, будет любопытно. Напомню, что первую часть заметки вы можете прочитать тут, а мы же движемся дальше!

LMD-Tools 5.x

Несмотря на название (напоминающее известный акроним от "lamers must die"), любой программист, однажды установив этот пакет, уже не сможет без него обходиться. И немудрено - более 200 компонентов всех мастей, хорошая справочная система, многочисленные примеры. Диапазон задач, охватываемый библиотекой, чрезвычайно широк - здесь найдутся компоненты и для начинающих программистов, и для профи. Предлагаю ознакомиться с наиболее интересными её составляющими, оставив в стороне бесконечные модификации label (с эффектами вроде изменения угла наклона и градиентной заливки), оригинальные кнопки с тенями, любой формы, и так далее - материала много, а хочется сказать о самом важном.

Для начала - контейнеры и хранилища. TLMDBitmapList, TLMDImageList, TL MDStringList, TLMDWaveList - контейнеры для списков волновых форм, изображений и строк. Поддерживается внутренняя компрессия данных. Для отображения их используются другие компоненты, работающие как раз с контейнерами. Например, TLMDLImage использует контейнер TLMDImageList. Не перепутайте класс TLMDLImage с TLMDN Image - последний является потомком обычного Tlmage, но обладает рядом новых свойств для работы с прозрачностью и режимами отображения.

TLMDGenericList - контейнер для любых файлов, от бинарных до текстовых. TLMDStackComponent - реализует простой и удобный стек - LIFO-буфер (Last In First Out) для указателей, a TLMD QueueComponent - FIFO буфер. TLMDListComponent включает обыкновенный связанный список, со всеми сопутствующими ему функциями. TLMDObjectStorage сохраняет свойства компонентов в реестре, файле или потоке, и по желанию загружает их. TLMDAssist - многостраничный компонент, более всего пригодный для создания разного рода инсталляторов и пошаговых мастеров установки. Выглядит как череда страниц-панелей с кнопками Next, Back, Cancel. На панели можно, разумеется, помещать свои элементы управления. Другой сходный компонент, TLMDForm TabControl - потомок TTabControl, но с одним важным отличием - вместо страниц-табов на нем располагаются формы!

Теперь немного об особых декорациях. TLMDLEDLabel - метка, мимо которой нельзя пройти. Отображает свойство caption в виде букв на LED-дисплее. Очень стильно и красиво. TLMDTechnicalLine - имеет вид стрелки либо линии на каком-нибудь чертеже или графике. Линия и "наконечник" стрелки полностью поддаются конфигурации. Что касается комбо-боксов, лист-боксов и строк ввода, то реализованы практически все популярные компоненты из этой группы. Например, комбо-боксы выбора шрифта и его свойств, а также цветов, принтера, дисков, комбо-бокс и лист-бокс с изображениями (работают с контейнерами), комбо-боксы с калькулятором, календарем.

Также в наличии Edit'ы - открытие/сохранение файла, обзор папок, выбор цвета с отображением в виде текста его hex-значения. TLMDMemo - memo с поддержкой более 64 килобайт текста, и рядом удобных свойств и методов. Впрочем, клинические исследования показали, что компонент не лишен очень странных глюков, связанных с загрузкой файлов и получением фокуса.

Наиболее полезные диалоги: TLMDAboutDIg - выводит на экран вполне приличное окно About со сведениями о производителе продукта. Можно задавать значения информационных полей самому, а можно позволить компоненту прочитать данные о файле из ресурса. TLMDBrowseDIg - вызывает к жизни диалог выбора папки - тот самый, что прежде мы вызывали посредством API-функции SHBrowseForFolder. TLMDInputDIg - вариант стандартного, однако с парой-другой полезных свойств - например, позиционированием окна. Кроме того, имеются диалоги с калькулятором, списком окон, текстовым редактором, и другие.

Есть и компоненты "утилитного" характера. Во-первых, это - TLMDApplicationCtrl, предоставляющий доступ к свойствам TApplication напрямую из Object Inspector. TTimerPool - как в RXLib (я говорил о нём в прошлом посте), реализация нескольких виртуальных таймеров на одном "физическом". TLMDIniCtrl - совмещает в себе методы работы с ini-файлом либо реестром - как вам будет удобнее. Желаете изменить хранилище информации - достаточно указать в свойстве target itlniFile или itRegistry, и нет нужды переписывать код.

TLDMFormFill - многофункциональный компонент, служащий графической "подложкой" формы, умеет заливать её цветом, градиентом, и текстурой - и всё это имеет очень много параметров, почти как в CorelDraw! TLMDMRUList - еще одна реализация добавления к меню списков открытых ранее файлов. LMDMessageHint, LMDHint, LMDShapeHint - какие угодно манипуляции с hint'ами - от изменений их цвета, формы и шрифта, до позиционирования и придания трёхмерного вида.

TLMDOnelnstance - разрешает либо запрещает запуск нескольких экземпляров вашего приложения. Хорошая страховка для некоторых игр! TLMDSyslnfo - массивный компонент, выдающий на гора в качестве свойств различные параметры вашей системы: доступные ресурсы, разрешение экрана (в том числе и в актуальном ныне PPI - "pixels per inch", то есть точек на дюйм), состояние CAPS LOCK, пути к системным папкам и многое другое. TLMDTraylcon - аналог компонента для работы с трэем из RXLib.

Пара компонентов, относящихся к обработке "мышиной возни": TLMDMouse Positioner и TLMDMouseFencer. Первый умеет перемещать указатель мыши в определенную позицию, а второй - ограничивать область перемещения. TLMDSendKeys - может посылать клавиатурные сообщения в другое приложение. TLMDWaveComp порадует тех, кто хочет добавить к своему приложению звуковые эффекты. Этот компонент умеет хранить в себе, либо загружать внешние Wave-файлы (в РСМ-формате, от 8 до 16 бит - проще говоря, стандартные "wav'ки"). Вдобавок к этому, можете рассчитывать на точное измерение времени при помощи TLMDHiTimer, который использует собственную thread для запуска обработчика события OnTimer.

Greg Liefs Assorted Delphi components (GLAD)

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

TGLAnchor - контролирует передвижение и изменение границ формы. TGLEasterEgg - создан специально для "припрятывания" в программе разного рода приколов, которые проявляются после некоторых действий пользователя (в данном случае - компонент реагирует на ввод пароля с клавишами-модификаторами). TGLDropFiles позволяет форме приложения легко и удобно принимать "перетаскиваемые" на неё файлы. TGLErrorLogger заносит в лог-файл возникающие исключения, добавляя в программу свой глобальный exception-handler. TGLTimeOut - выполняет заданную вами функцию, если пользователь бездействует определенное время.

TGLEIastic - восьмое чудо света, масштабирующее компоненты при изменении размеров формы. TGLSysMenu - долой API'шный код добавления своих элементов в системное меню! Этот компонент представляет собой pop-up меню, чьи menu items добавляются в системное меню. TGLWallpaperChanger может устанавливать обои на рабочем столе. Увы, этот компонент очень прост и бесхитростен, опций вроде tiled или stretched в нем нет. Ну что же, на этом наш обзор квартета популярных Delphi-библиотвк плавно закругляется. Всё, что планировалось описать - я описал, а что забыто - не обессудьте. Если вспомню что-то действительно важное, то обязательно выложу в своём блоге!