Студопедия
rus | ua | other

Home Random lecture






Практическая работа 45. Создание ActiveX Control


Date: 2015-10-07; view: 403.


ActiveX Control

Приводится пример создания ActiveX Control. После создания он автоматически добавляется к объектам на панели элементов управления Visual Basic и может быть использован в проекте.

Выполнить следующее:

1. в окне Новый проект () выбрать элемент ActiveX Control (форма теперь будет объектом UserControl) OK задать имя проекта: щелчок правой клавишей мыши в окне проекта на Project1 Свойства в поле Имя проекта ввести MeinCont OK,

2. свойству ControlContainer присвоить значение True - создать элемент-контейнер,

3. создать процедуры Timer1_Timer() и Timer2_Timer(), обеспечивающие перемещение объекта Image с рисунком и поля метки в созданном элементе-контейнере, для этого:

o создать поле метки; присвоить значения: Label1.Caption = A Happy New Millennium !!!, AutoSize = Тrue, создать элемент управления Image (см. ); свойству Stretch присвоить значение True,

o создать 2 элемента управления Timer, свойствам Interval присвоить значения 50 и 100 соответственнно,

4. создать набор параметров (свойств, методов, событий); для этого использовать программу-мастер: ActiveX Control Interface Wizard: меню Добавления Менеджер расширений включить флажок Загружен ОК; имя программы появляется в выпадающем меню Добавления стартовать эту программу. В результате действий пользователя (их последовательность дана ниже) система программирования генерирует соответствующий код (см. код ниже: курсивом выделен частично распечатанный сгенерированный системой код),

5. после старта программы-мастера во втором окне-ассистенте, нужно выбрать имеющиеся параметры из списка: свойства: BackСolor, BorderStyl, Caption, Font, ForeColor, ControlContainer, Picture, Stretch, Interval; событие Resize, для этого:

o удалить всe содержимое правого поля за исключением параметров, перечисленных выше, добавить недостающее из левого поля в правое. Тем не менее параметров нехватает, поэтому следует:

o перейти к следующему окну-ассистенту, ; ввести собственные параметры в имеющееся поле ввода, нажимая после каждого ввода кнопку Next :,

o


Рис. 6.13.Второе окно-ассистент - выбор имеющихся в наличии параметров

 


Рис. 6.14.Следующее окно-ассистент - создание собственных параметров

 

o распределить все параметры между объектами: создаваемый элемент, поле метки, Timer, Image; для этого перейти к следующему окну-ассистенту, , при этом использовать данные

 

Таблица 6.5. Соответствие объекты - параметры
Name Control Member
BackColor UserControl BackColor
BorderStyle UserControl BorderStyle
Caption Label1 Caption
ControlContainer UserControl ControlContainer
Resize UserControl Resize
Font Label1 Font
ForeColor Label1 ForeColor
Interval Timer1 Interval
Stretch Image1 Stretch
Picture Image1 Picture

o

o
Рис. 6.15.Следующее окно-ассистент

 

o cделать щелчок на кнопке Finish; код сгенерирован, его можно просмотреть,

6. сохранить проект,

7. ввести код, данный ниже (за исключением строк, данных курсивом); пояснения даны под комментариями к коду,

8. проверить функционирование созданного элемента, для этого: стартовать проeкт: выполнение проводится в приложении-Browser

9. остановить выполнение, закрыть окна кода и объект UserControl (форма); пиктограмма ActiveX Control автоматически добавляется к объектам панели элементов управления и его можно использовать в других проектах. Можно, например, выполнить следующее: меню Файл Добавить проект Standard.EXE OK разместить новый элемент на форме.

 

' описание переменных, используемых в процедурах,

' обеспечивающих перемещение элементов

' управления Label1, Image1

Private Go As Integer, Go1 As Integer

' обработка события объекта Timer

Private Sub Timer1_Timer()

GoMeinCont

End Sub

'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!

'MappingInfo=UserControl,UserControl,-1,BackColor

Public Property Get BackColor() As OLE_COLOR

BackColor = UserControl.BackColor

End Property

Public Property Let BackColor(ByVal New_BackColor As OLE_COLOR)

UserControl.BackColor() = New_BackColor

PropertyChanged "BackColor"

End Property

Private Sub Timer2_Timer()

Go1MeinCont

End Sub

'Load property values from storage

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

UserControl.BackColor = PropBag.ReadProperty("BackColor", &H8000000F)

' центрировать элементы, задать начальные значения

' переменным. Обратить внимание на использование в

' данном случае события Initialize

Private Sub UserControl_Initialize

Label1.Move (UserControl.Width - Label1.Width)/2, _

(UserControl.Height - Label1.Height)/2

Image1.Move (UserControl.Width - Image1.Width)/4, _

(UserControl.Height - Image1.Height)/4

Go = 1: Go1 = 2

End Sub

Private Sub UserControl_Resize() ' масштабировать объекты

Label1.Width = (ScaleWidth - Label1.Left)

Label1.Height = (ScaleHeight - Label1.Top)

Image1.Width = (ScaleWidth - Image1.Left)

Image1.Height = (ScaleHeight - Image1.Top)

End Sub

Private Sub GoMeinCont() ' реализация перемещения

Select Case Go

Case 1: Label1.Move Label1.Left - 45, Label1.Top - 45

If Label1.Left <= 0 Then

Go = 2

ElseIf Label1.Top <= 0 Then

Go = 4

End If

Case 2: Label1.Move Label1.Left + 45, Label1.Top - 45

If Label1.Left >= (UserControl.Width - Label1.Width) Then

Go = 1

ElseIf Label1.Top <= 0 Then

Go = 3

End If

Case 3: Label1.Move Label1.Left + 45, Label1.Top + 45

If Label1.Left >= (UserControl.Width - Label1.Width) Then

Go = 4

ElseIf Label1.Top >= (UserControl.Height - Label1.Height) Then

Go = 2

End If

Case 4: Label1.Move Label1.Left - 45, Label1.Top + 45

If Label1.Left <= 0 Then

Go = 3

ElseIf Label1.Top >= (UserControl.Height - Label1.Height) Then

Go = 1

End If

End Select

End Sub

Private Sub Go1MeinCont()

Select Case Go1

Case 1: Image1.Move Image1.Left - 60, Image1.Top - 60

If Image1.Left <= 0 Then

Go1 = 2

ElseIf Image1.Top <= 0 Then

Go1 = 4

End If

Case 2: Image1.Move Image1.Left + 60, Image1.Top - 60

If Image1.Left >= (UserControl.Width - Image1.Width) Then

Go1 = 1

ElseIf Image1.Top <= 0 Then

Go1 = 3

End If

Case 3: Image1.Move Image1.Left + 60, Image1.Top + 60

If Image1.Left >= (UserControl.Width - Image1.Width) Then

Go1 = 4

ElseIf Image1.Top >= (UserControl.Height - Image1.Height) Then

Go1 = 2

End If

Case 4: Image1.Move Image1.Left - 60, Image1.Top + 60

If Image1.Left <= 0 Then

Go1 = 3

ElseIf Image1.Top >= (UserControl.Height - Image1.Height) Then

Go1 = 1

End If

End Select

End Sub


Рис. 6.16.ActiveX Control


<== previous lecture | next lecture ==>
Обмен данными | Практическая работа 46. ActiveX Document.DLL
lektsiopedia.org - 2013 год. | Page generation: 0.003 s.