Опубликован: 04.07.2006 | Уровень: для всех | Доступ: платный
Лекция 6:

Обмен данными

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

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

  1. в окне Новый проект (рис. 6.11) выбрать элемент ActiveX Control (форма теперь будет объектом UserControl) \to OK \to задать имя проекта: щелчок правой клавишей мыши в окне проекта на Project1 \to Свойства \to в поле Имя проекта ввести MeinCont \to OK,
  2. свойству ControlContainer присвоить значение True - создать элемент-контейнер,
  3. создать процедуры Timer1_Timer() и Timer2_Timer(), обеспечивающие перемещение объекта Image с рисунком и поля метки в созданном элементе-контейнере, для этого:
    • создать поле метки; присвоить значения: Label1.Caption = A Happy New Millennium !!!, AutoSize = Тrue, создать элемент управления Image (см. рис. 6.16); свойству Stretch присвоить значение True,
    • создать 2 элемента управления Timer, свойствам Interval присвоить значения 50 и 100 соответственнно,
  4. создать набор параметров (свойств, методов, событий); для этого использовать программу-мастер: ActiveX Control Interface Wizard: меню Добавления \to Менеджер расширений \to включить флажок Загружен \to ОК; имя программы появляется в выпадающем меню Добавления \to стартовать эту программу. В результате действий пользователя (их последовательность дана ниже) система программирования генерирует соответствующий код (см. код ниже: курсивом выделен частично распечатанный сгенерированный системой код),
  5. после старта программы-мастера во втором окне-ассистенте, рис. 6.13, нужно выбрать имеющиеся параметры из списка: свойства: BackСolor, BorderStyl, Caption, Font, ForeColor, ControlContainer, Picture, Stretch, Interval; событие Resize, для этого:
    • удалить всe содержимое правого поля за исключением параметров, перечисленных выше, добавить недостающее из левого поля в правое. Тем не менее параметров нехватает, поэтому следует:
    • перейти к следующему окну-ассистенту, рис. 6.14; ввести собственные параметры в имеющееся поле ввода, нажимая после каждого ввода кнопку Next :,
      Второе окно-ассистент - выбор имеющихся в наличии параметров

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

      Рис. 6.14. Следующее окно-ассистент - создание собственных параметров
    • распределить все параметры между объектами: создаваемый элемент, поле метки, Timer, Image; для этого перейти к следующему окну-ассистенту, рис. 6.15, при этом использовать данные табл. 6.5.
      Таблица 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
      Следующее окно-ассистент

      Рис. 6.15. Следующее окно-ассистент
    • cделать щелчок на кнопке Finish; код сгенерирован, его можно просмотреть,
  6. сохранить проект,
  7. ввести код, данный ниже (за исключением строк, данных курсивом); пояснения даны под комментариями к коду,
  8. проверить функционирование созданного элемента, для этого: стартовать проeкт: выполнение проводится в приложении-Browser рис. 6.16.
  9. остановить выполнение, закрыть окна кода и объект UserControl (форма); пиктограмма ActiveX Control автоматически добавляется к объектам панели элементов управления и его можно использовать в других проектах. Можно, например, выполнить следующее: меню Файл \to Добавить проект \to Standard.EXE \to OK \to разместить новый элемент на форме.
' описание переменных, используемых в процедурах,
' обеспечивающих перемещение элементов 
' управления 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
ActiveX Control

Рис. 6.16. ActiveX Control
Константин Новков
Константин Новков

Лекция 3: 2

Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox).

Не могу найти меню Разработать (Develop)>Links и т.д.

антонина квасова
антонина квасова
Ольга Павлова
Ольга Павлова
Россия, Череповец, ЧГУ, 1997
Кира Плосконосова
Кира Плосконосова
Россия, Москва