![]() |
Практическая работа 45. Создание ActiveX ControlDate: 2015-10-07; view: 403. ActiveX Control Приводится пример создания ActiveX Control. После создания он автоматически добавляется к объектам на панели элементов управления Visual Basic и может быть использован в проекте. Выполнить следующее: 1. в окне Новый проект () выбрать элемент ActiveX Control (форма теперь будет объектом UserControl) 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
o распределить все параметры между объектами: создаваемый элемент, поле метки, Timer, Image; для этого перейти к следующему окну-ассистенту, , при этом использовать данные
o o
o cделать щелчок на кнопке Finish; код сгенерирован, его можно просмотреть, 6. сохранить проект, 7. ввести код, данный ниже (за исключением строк, данных курсивом); пояснения даны под комментариями к коду, 8. проверить функционирование созданного элемента, для этого: стартовать проeкт: выполнение проводится в приложении-Browser 9. остановить выполнение, закрыть окна кода и объект UserControl (форма); пиктограмма ActiveX Control автоматически добавляется к объектам панели элементов управления и его можно использовать в других проектах. Можно, например, выполнить следующее: меню Файл
' описание переменных, используемых в процедурах, ' обеспечивающих перемещение элементов ' управления 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
|