|
|
|
||||||||||||
|
|
Собственный, легко управляемый и профессионально разработанный сайт – необходимый элемент любого бизнеса. Находитесь ли Вы в командировке, в дороге, дома или на отдыхе имея компьютер, подключенный к сети Internet, Вы получаете доступ к управлению Вашим сайтом! |
|||
Создаём крутую кнопку на Visual BasicСтатьи → Программирование на VisualBasicНаверное, каждый разработчик хочет сделать интерфейс своей программы более привлекательным, используя нестандартные элементы ActiveX. Возьмём, например стандартную командную кнопку, без которой не обойдёшься, и усовершенствуем её - создадим свою. Сделаем так, чтобы можно было выбрать стиль её бордюра (при нормальном состоянии, при движении по ней курсором и при нажатии на неё), добавим возможность выбора картинок для кнопки (во всех предыдущих состояниях + состояние дезактивации кнопки) и добавим возможность выбора цвета текста при движении по кнопки курсором. Сначала создадим новый элемент ActiveX и назовём его "CoolButton", а проект "CoolBTN". Установим свойство элемента "AutoRedraw" = True. Теперь добавим на контрол четыре элемента PictureBox, назовём их "picUP", "picDown", "picMove" и "picDisabled". Они будут хранить картинки различных состояний кнопки. Завершим работу с элементами - установим свойства элементов PictureBox "AutoRedraw" = True и "Visible" = False. Запустим мастер "ActiveX Control Interface Wizard" и добавим следующие свойства и методы:
Теперь перейдём в код нашего элемента. Для определения положения курсора и некоторых графических операций нам потребуются следующие API функции, добавьте их в код элемента: Private Declare Function GetCapture Lib "user32" () As Long Функция GetCapture получает окно, которое принимает сообщения мышки, а функция SetCapture, соответственно, устанавливает, какому окну получать мышиные сообщения. Чтобы мышиные сообщения получало окно, над которым действительно находится курсор, будем использовать эту функцию. Для рисования рамки кнопки нам потребуется API функция DrawRect, необходимые для неё структура и константы перечислены ниже. При рисовании текста с помощью функции DrawText нам будет необходима функция SetTextColor, чтобы установить цвет текста. Значение свойства "ForeColor" элемента ActiveX не будет влиять на цвет текста, нарисованный функцией DrawText. Private Const BDR_RAISEDINNER = &H4 Private Type RECT Сделаем у нашей кнопки несколько стилей бордюра (добавим перечисление этих стилей): Public Enum ButtonStyle Для того, чтобы пользователь мог выбрать один из этих стилей поправьте тип данных в процедурах Let и Get каждого совойства Style...: Public Property Get StyleUp() As ButtonStyle Public Property Let StyleUp(ByVal New_StyleUp As ButtonStyle) Для отрисовки кнопки нам необходимы процедуры для каждого состояния кнопки, рассмотрим одну из них: Private Sub RenderUP() 'рисуем кнопку в нормальном состоянии Вызывать процедуры отрисовки мы будем в мышиных событиях (также в событиях UserControl_Resize и UserControl_Show): Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) Private Sub UserControl_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) Private Sub UserControl_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) В событиях MouseDown и MouseUp думаю, что нет ничего сложного и их не надо объяснять. Процедуры отрисовки кнопки в других состояних аналогичны процедуре RenderUp, за исключением некоторых особенностей. В этой статье я рассмотрел основу работы нашей кнопки. Источник: http://hiprog.com 16.02.2006 |
VSESMI.ru — новости в СМИ.
Tur-Hotel.ru — отзывы об отелях
|
|
Copyright © 2002—2012 ООО "Хостмэйк" Телефон в Москве: +7 (495) 223-46-50 Телефон в Санкт-Петербурге: +7 (812) 448-38-90 Тел./Факс: +7 (8636) 237-836 E-mail: 2006 |