| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() |
Создаем свой ActiveX Control Почему я, не будучи профессиональным программистом, написал эту статью-пример. Так сложилась ситуация, что я начал изучать VB в окружении, где никто этим не занимался, и это продолжалось достаточно долго. Так что посоветоваться с кем-то не предоставлялось возможности. Искать приходилось по крохам. Поэтому сейчас, когда Борис Рудой стал публиковать мои наработки, ко мне стали приходить письма с просьбами написать какой-либо ActiveX для их программ. А почему не сами? Проанализировав корреспонденцию напрашивается три основных ответа:
Последние две предпосылки как-то не вдохновляют для написания статьи J , а вот первая… Собственно говоря она и послужила толчком для этой статьи. Пусть кому-то будет чуть-чуть легче в освоении VB, чем мне в свое время.Visual Basic предполагает три основных пути для создания ActiveX Control'ов, это:
Последний путь самый легкий и поэтому наиболее часто встречаемый. Не претендуя на всю полноту охвата описать создание ActiveX Control мне бы хотелось, чтобы эта статья подтолкнула Вас к собственному творчеству. Итак создадим поэтапно ActiveX Control. Запускаем VB и выбираем под ярлыком "New" создание ActiveX Control Предположим мы создаем контейнер с плавающей надписью. Вначале определимся какие свойства, методы и события нам будут необходимы. Изначально хорошо спланировав - на переделки займем времени всего в 2 раза больше от запланированного Свойства:
Методы: Контейнер - пассивный элемент, следовательно нужда в методах отсутствует События:
Теперь самое время переназвать проект и сам контрол. Имена не должны повторяться. Щелкнем правой клавишей в окне проектов на имене Project1 и в выпадающем меню выберем Project1 Properties… В открывшемся диалоговом окне под надписью Project Name вписываем свое название проекта - в данном случае - contZygZag, а под надписью Project Description - Контейнер с "плавающей" надписью. Именно эта запись будет появляться у Вас потом, когда Вы будете выбирать свой контрол для установки в приложении. Нажимаем "ОК" Далее вместо UserControl1 в свойстве Name напишем ZigZag, а так же выберем свойство ControlContainer и установим его в True. Помещаем на контрол два стандартных элемента Label (Name = lblCaption, AutoSize = True, BackStyle = 0-Transparent, Caption = ZigZag, Left = 0, Top = 0) и Timer (Interval = 100, Enabled = False). Теперь самое время сохранить проект. Следующим этапом является написание кода. Воспользуемся для этого специальным мастером, предоставляемым нам VB. Выберите меню Add-Ins/Add-In Manager…В диалоговом окне выберите ActiveX Ctrl Interface Wizard. Теперь он появился и в меню. Вызовем его. В первом шаге Wizard'а в правом списке (Selected names) оставим только те свойства и события, которые мы определили выше. Из левого списка туда же добавим те, которые VB не захотел поместить автоматически (Caption, Interval). Перейдем к следующему шагу. Допишем те свойства и события, которым мы дали свои названия (TimerOn - Property и CaptionClick - Event). В следующем шаге определимся в привязке всего выбранного к существующим элементам:
Помечены все выбранные свойства и события - нажимаем кнопку "Finish". Код в черновике готов. NB! Для тех кто пишет на VB5 (в VB6 эта ошибка исправлена) - внесите маленькие дополнения: в Private Sub UserControl_ReadProperties(PropBag As PropertyBag) - строка, где описывается Font должна звучать следующим образом - Set lblCaption.Font = PropBag.ReadProperty("Font", Ambient.Font); и аналогично в Private Sub UserControl_WriteProperties(PropBag As PropertyBag) - Call PropBag.WriteProperty("Font", lblCaption.Font, Ambient.Font) Сохраним проект. Теперь самое время посмотреть, что же у нас получилось. Выберем меню File/Add Project и в диалоговом окне - Standart EXE. В окне проектов щелкните правой клавишей мыши на новом проекте и выберите контекстное меню Set As Start Up, чтобы при запуске он стартовал первым. Желательно (но совсем не обязательно) переименовать вновь созданный проект и форму, например prjTest и frmTest соответственно. Теперь на форме можно разместить свой ActiveX Control, выбрав его на панели со стандартными элементами (окно с самим элементом должно быть закрыто). Поиграйте со свойствами - получается? Не все? Будем исправлять. Вызывает некоторое удивление свойство BorderStyle - возможность устанавливать только числовые значения, и то если ввести допустим цифру 2, то возникает ошибка. Конечно можно сделать проверку на ограниченный ввод значений записав это в Property Let. Но давайте ограничим саму возможность ввода с клавиатуры, а сделаем только возможность выбора. Для этого в самом начале листа кодов, сразу после Option Explicit сделаем такую запись:
В заключение компилируем наш ActiveX Control (меню File/Make contZygZag…) - одновременно происходит прописывание его в реестр Windows Вашего компьютера.
Для особо ленивых привожу полный листинг создания этого ActiveX Control'a. [Содержание][Вперед] |
|
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
|