Подписка

добавить на Яндекс

Наши проекты

Delphi+Google

Google API

Google API в Delphi - проект с открытым исходным кодом.

Chrono

Chrono

Хронометр - программа для ведения списка задач.

ODFProc

ODFProc

ODFProc - работа с документами OpenOffice в Lazarus и FreePascal.

Поддержка блога

А тут я коплю на лицензию Delphi XE на iPad =).
Сумма пожертвования не фиксирована.

Публикации

Год назад

Случайный пост

Последние

Сообщения форума

Комментарии

Свежие комментарии

Социальные сети

Google

Facebook

Twitter

Опрос

Вы сейчас или в ближайшем обозримом будущем планируете разрабатывать кроссплатформенное приложение с использованием Firemonkey?



Loading ... Loading ...

Блоги и сообщества

Статьи по Delphi DelphiFeeds.ru - Все Delphi-блоги Рунета Сообщество умных людей VR-Online.RU Бесплатный журнал для программистов и всех, кто интересуется IT Статьи и уроки по Delphi Новостной блог о высоких технологиях
Система Orphus
Опубликовал SeregaAltmer 1 октября 2009 в 21:44.
Категории: Компоненты Delphi.


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

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

Принцип работы компонента TSkinControl

MainMap
Базовым классом для компонента является TWinControl, что позволяет без труда использовать его, как элемент интерфейса, либо как оболочку для всей формы в целом (для этого достаточно присвоить свойствам формы BorderStyle и AutoSize значения “bsNone” и “True” соответственно).

Для работы компонент использует два изображения. Первое (свойство SkinImage) – для отображения пользователю, в качестве самого интерфейса. Второе (свойство MaskImage) – для распознавания элементов интерфейса, в данном случае это кнопки и надписи. При этом на второе изображение накладываются некоторые ограничения. Каждый элемент должен иметь уникальный цвет и прямоугольную, непрерывную форму. Размеры MaskImage должны полностью соответствовать размерам SkinImage.

Свойства и события компонента

Для обработки событий любого элемента, в шкуре, используются события OnClick, OnMouseDown, OnMouseUp и OnMouseMove самого компонента, т.к. для компонента нет никакой разницы, с каким элементом работать, в его представлении элемент – всего лишь набор точек одного цвета. Для определения конкретного элемента, с которым происходит взаимодействие, используется параметр ColorControl, который содержит его уникальный идентификатор – цвет.

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

Для вывода текста в области элементов используется процедура SetTextOfControl. Размер шрифта, в случае если элемент малых размеров, выбирается автоматически.

Напоследок

Компонент создавался, как наглядный пример реализации работы со шкурами и поэтому, пока он не предназначен для использования в серьезных проектах. В данном компоненте реализована работа, только с двумя основными возможностями:
1. Работа с кнопками.
2. Работа с надписями, в том числе многострочными.
Для более-менее полноценной работы, как минимум, необходимо реализовать возможность использования списков, текстовых полей и анимации состояния (наведение мыши, нажатие кнопки мыши и др.) Все это не намного сложнее уже сделанного. Если кого-то заинтересует использование, этого компонента, обращайтесь, доведу его до ума с учетом ваших пожеланий.
Если есть другие предложения или дополнения по данному вопросу, пишите. Лучшая благодарность для автора – интерес к его работе :), а дополнительный интерес со стороны пользователей можно получить, если развить (раскрутить ресурс со статьей, а вот и биржа статей, которая пригодиться Вам при продвижении своих веб-проектов.

zip Компонент TSkinControl(678.22 KB)

Мой блог находят по следующим фразам

Понравилась статья? Тогда:
Делись! Загружай! Плюсуй!
   Отправить PDF на   
Читай ещё статьи на WebDelphi.ru

Комментарии (2)

WP_Cloudy

Ваш ответ

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

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

   


купить газовый котел, продукция завода.