VB-Coder's Site
Главная Статьи DownLoad Ссылки
Введение.

В этой статье мы будем учиться создавать Activex контролы.
Занятие это очень интересно, так как немного отличается
от обычного кодинга на Visual Basic, но не будем об этом, в процессе
разберётесь. Поговорим лучше о важности самих контролов,
ведь с помощью них легче всего добиться хорошего дизайна
вашей программы, повальное большинство контролов является
дизайнерскими штучками, и лишь немногие добавляют функциональности.
Сегодня мы будем создавать контрол первого вида, дизайнерский.
Не сказать чтобы он у меня получился очень красивым, но
выглядит вроде ничего так. Теперь объясню какую функцию
будет выполнять наш ActiveX контрол. Мы не будем делать
что-нибудь сверх красивое, а поэтому возпользуемся ст. средствами
Visual Basic'a, TextBox'ом и Label'ом.

Делаем заготовку.

Как я уже говорил, нам понадобится только Visual Basic и
два его стандартных компонента, а поэтому можно сказать
что всё готово и можно приступать. Для начала надо создать
проект контрола делается это так: вызовите меню File/New Project...
и выберите в появившемся окне ActiveX Control.

После таких незамысловатых операций мы увидим в окне
проекта не совсем обычную форму, это и есть наша заготовка.
Необычна она тем, что у неё нет заголовка.




После всех вышеописсаных процедур разместите
на форме TextBox, а чуть левее него или выше Label.
У вас должно получиться примерно так же, как на рисунке
ниже:

Осталось только поставить у главной формы свойство
AutoRedraw равным True и можно переходить к следующему
шагу.

Код.

Далее впишите в код следующее:

Option Explicit

'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
'MappingInfo=Texter,Texter,-1,BackColor
Public Property Get BackColor() As OLE_COLOR
BackColor = Texter.BackColor
End Property

Public Property Let BackColor(ByVal New_BackColor As OLE_COLOR)
Texter.BackColor() = New_BackColor
PropertyChanged "BackColor"
End Property

'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
'MappingInfo=Texter,Texter,-1,ForeColor
Public Property Get ForeColor() As OLE_COLOR
ForeColor = Texter.ForeColor
End Property

Public Property Let ForeColor(ByVal New_ForeColor As OLE_COLOR)
Texter.ForeColor() = New_ForeColor
PropertyChanged "ForeColor"
End Property

'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
'MappingInfo=Texter,Texter,-1,Enabled
Public Property Get Enabled() As Boolean
Enabled = Texter.Enabled
End Property

Public Property Let Enabled(ByVal New_Enabled As Boolean)
Texter.Enabled() = New_Enabled
PropertyChanged "Enabled"
End Property

'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
'MappingInfo=Texter,Texter,-1,Font
Public Property Get Font() As Font
Set Font = Texter.Font
End Property

Public Property Set Font(ByVal New_Font As Font)
Set Texter.Font = New_Font
PropertyChanged "Font"
End Property

'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
'MappingInfo=Texter,Texter,-1,BorderStyle
Public Property Get BorderStyle() As Integer
BorderStyle = Texter.BorderStyle
End Property

Public Property Let BorderStyle(ByVal New_BorderStyle As Integer)
Texter.BorderStyle() = New_BorderStyle
PropertyChanged "BorderStyle"
End Property

'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
'MappingInfo=Texter,Texter,-1,Text
Public Property Get Caption() As String
Caption = Texter.Text
End Property

Public Property Let Caption(ByVal New_Caption As String)
Texter.Text() = New_Caption
PropertyChanged "Caption"
End Property

'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
'MappingInfo=Captioner,Captioner,-1,Caption
Public Property Get TextOfLabel() As String
TextOfLabel = Captioner.Caption
End Property

Public Property Let TextOfLabel(ByVal New_TextOfLabel As String)
Captioner.Caption() = New_TextOfLabel
PropertyChanged "TextOfLabel"
End Property

'Load property values from storage
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

Texter.BackColor = PropBag.ReadProperty("BackColor", &H80000005)
Texter.ForeColor = PropBag.ReadProperty("ForeColor", &H80000008)
Texter.Enabled = PropBag.ReadProperty("Enabled", True)
Set Texter.Font = PropBag.ReadProperty("Font", Ambient.Font)
Texter.BorderStyle = PropBag.ReadProperty("BorderStyle", 1)
Texter.Text = PropBag.ReadProperty("Caption", "Text1")
Captioner.Caption = PropBag.ReadProperty("TextOfLabel", "Label1")
End Sub

'Write property values to storage
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

Call PropBag.WriteProperty("BackColor", Texter.BackColor, &H80000005)
Call PropBag.WriteProperty("ForeColor", Texter.ForeColor, &H80000008)
Call PropBag.WriteProperty("Enabled", Texter.Enabled, True)
Call PropBag.WriteProperty("Font", Texter.Font, Ambient.Font)
Call PropBag.WriteProperty("BorderStyle", Texter.BorderStyle, 1)
Call PropBag.WriteProperty("Caption", Texter.Text, "Text1")
Call PropBag.WriteProperty("TextOfLabel", Captioner.Caption, "Label1")
End Sub

Не буду ничего пояснять по коду, скажу
только что я делал его с помощью VB 6
ActiveX Ctrl Interface Wizard. Он прост
в обращении, так что я думаю вам не составит
труда в нем разобраться.


Заключение.

На этом я заканчиваю свою статью об ActiveX контролах.
Если у вас что-то не получилось, то пишите на amd1991@mail.ru


Данная статья яляется собственностью amd1991
Эксклюзивно для сайтов http://www.psisoft.jino-net.ru/ и этого сайта.

Обратно... На главную
Hosted by uCoz