Привлекательный и необычный интерфейс, играет не самую последнюю роль в популярности и востребованности любого программного продукта. И хотя, все же, в некоторых случаях использование средств, стандартной VCL является наиболее верным решением, речь сейчас не о них.
Большинство разработчиков стараются обходить вопрос, использования шкур, стороной. Причины разные, самая распространенная – нежелание вникать в “сложности” работы со шкурами. А есть ли они, те самые сложности, которых многие опасаются? Посидев над обрисовавшейся задачкой часик – другой, я выяснил главное – все предельно просто. Представляю на ваш суд, результат своих изысканий. ' '
Принцип работы компонента TSkinControl

Базовым классом для компонента является TWinControl, что позволяет без труда использовать его, как элемент интерфейса, либо как оболочку для всей формы в целом (для этого достаточно присвоить свойствам формы BorderStyle и AutoSize значения “bsNone” и “True” соответственно).
Для работы компонент использует два изображения. Первое (свойство SkinImage) – для отображения пользователю, в качестве самого интерфейса. Второе (свойство MaskImage) – для распознавания элементов интерфейса, в данном случае это кнопки и надписи. При этом на второе изображение накладываются некоторые ограничения. Каждый элемент должен иметь уникальный цвет и прямоугольную, непрерывную форму. Размеры MaskImage должны полностью соответствовать размерам SkinImage.
Свойства и события компонента
Для обработки событий любого элемента, в шкуре, используются события OnClick, OnMouseDown, OnMouseUp и OnMouseMove самого компонента, т.к. для компонента нет никакой разницы, с каким элементом работать, в его представлении элемент – всего лишь набор точек одного цвета. Для определения конкретного элемента, с которым происходит взаимодействие, используется параметр ColorControl, который содержит его уникальный идентификатор – цвет.
Событие OnMouseMove имеет изменяемый параметр Cursor, с помощью него можно менять внешний вид курсора при наведении на различные элементы шкуры.
Для вывода текста в области элементов используется процедура SetTextOfControl. Размер шрифта, в случае если элемент малых размеров, выбирается автоматически.
Напоследок
Компонент создавался, как наглядный пример реализации работы со шкурами и поэтому, пока он не предназначен для использования в серьезных проектах. В данном компоненте реализована работа, только с двумя основными возможностями:
1. Работа с кнопками.
2. Работа с надписями, в том числе многострочными.
Для более-менее полноценной работы, как минимум, необходимо реализовать возможность использования списков, текстовых полей и анимации состояния (наведение мыши, нажатие кнопки мыши и др.) Все это не намного сложнее уже сделанного. Если кого-то заинтересует использование, этого компонента, обращайтесь, доведу его до ума с учетом ваших пожеланий.
Если есть другие предложения или дополнения по данному вопросу, пишите. Лучшая благодарность для автора – интерес к его работе :), а дополнительный интерес со стороны пользователей можно получить, если развить (раскрутить ресурс со статьей, а вот и биржа статей, которая пригодиться Вам при продвижении своих веб-проектов.
Компонент TSkinControl(678.22 KB)
Мой блог находят по следующим фразам
- запись string в file of text lazarus
- определить тошноту текста
- synapse post
- книга delphi 2010
- добавление своей библиотеки в rad studio
- програмный таймер
Related posts:









