| ||
Нестандартный интерфейс - просто!Всем уже порядком надоел стандартный интерфейс Windows-программ, и начинающему программисту должно быть особенно интересно создавать программы с необычным "фирменным" стилем. Написание собственных визуальных компонентов довольно сложный и трудоемкий процесс, и эту тему мы здесь затрагивать не будем. Сегодня мы поговорим о том, как придать своей программе неповторимый, оригинальный вид, используя стандартные визуальные компоненты. Начнем, пожалуй, с самого интересного - с кнопок. Примеры написаны в Borland C++ Builder, но легко переводятся и в Visual C++, и в Delphi. Итак, вариант первый - кнопки из стандартного компонента Label. Если как следует присмотреться к свойствам Label, то становится очевидно что это идеальная плоская кнопка, обладающая такими важными свойствами, как Color, Font и обрабатывающая необходимые нам события MouseMove, MouseDown, MouseUp, Click. Приступаем. Первым делом необходимо определиться в выборе цветов вашей кнопки. Пусть в режиме ожидания кнопка будет темно-серого цвета (Gray), под мышкой - голубого (Blue), и, наконец, в нажатом состоянии - синего (Navy). Соответственно, в панели свойств нашего Label1 в поле Color указываем clGray. Теперь начинается самое интересное. Открываем панель событий, выбираем OnMouseOver и в окне кода в процедуру обработки OnMouseOver вносим следующий код: if ( Label1->Tag==0) { Теперь при наведении курсора мыши на кнопку она поменяет свой цвет на голубой. Зачем понадобилось использовать свойство Tag? Дело в том, что если этого не сделать, то все время, пока курсор будет двигаться над кнопкой, процедура обработки будет "крутиться по кругу" и кнопка будет постоянно перерисовываться одним и тем - же цветом, регулярно при этом подмигивая. Далее нам необходимо вернуть цвет кнопке в момент, когда мышь "покинет" ее. Если вы счастливый обладатель Borland C++ Builder 6, то у вашего элемента Label есть событие OnMouseLeave, если же у вас более ранняя версия, то придется обходиться подручными средствами. Ведь когда курсор покидает вашу кнопку, он перемещается на форму (или какой-то другой элемент) Вот это мы и используем. В событии формы OnMouseOver пишем следующие строки: if (Label1->Tag==1) { или (для шестого Билдера) в событии OnMouseLeave: Label1->Color=clGray; Цвет кнопки восстанавливается, и свойство Tag подготавливается для следующего обращения пользователя к кнопке. Теперь - дело за малым: кнопка должна "нажаться" и "отпуститься". Для этого в обработчике события кнопки OnMouseDown пишем: Label->Color=clNavy; а в OnMouseUp: Label->Color=clBlue; Здесь указывается именно этот цвет т.к. курсор будет находиться еще над кнопкой. Осталось только в событии кнопки OnClick прописать требуемый вам код обработки нажатия и кнопочка готова! Такие кнопки выглядят довольно интересно, особенно если не "переборщить" с цветами, но гораздо симпатичнее будет, если вы скомбинируете изменения цветов кнопки и цветов шрифта надписи. Это свойство вызывается так: Label1->Font->Color= // Здесь необходимый вам цвет. Кстати, нет никакой необходимости ограничиваться стандартной палитрой т.к. кроме цветовых констант можно пользоваться шестнадцатеричным представлением цвета в формате RGB. В таком случае ваш код может выглядеть примерно так: Label1->Font->Color=0x00FF7733; Здесь FF будет соответствовать 255 синего, 77 - 119 зеленого, а 33 - 51 красного. Cайт автора: http://www.ldbsoft.nm.ru/
| ||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |