Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Створення і використання компонентів COM

Поиск

Постановка задачі: створити компонент-сервер COM з методом, який повертає число помножене на 2, створити клієнта COM, який використовує об’єкт COM у C++ Builder і VBA.

Послідовність виконання:

Спочатку створюємо і реєструємо бібліотеку типів Typelib2

(Очистіть папку з минулими проектами.)

1 File/Close All

2 File/New/Other/ActiveX/Type Library

3 Добавляємо новий інтерфейс: New Interface

4 Добавляємо новий метод: New Method

5 Добавляємо в метод параметр для запису:

Parameters/Add/Type = double, Modifier=In

6 Добавляємо в метод параметр для читання:

Parameters/Add/Type =double*, Modifier=Out

7 Refresh Implementation

8 Реєструємо бібліотеку: Register Type Library

 

Створюємо COM об’єкт

9 Створюємо додаток типу EXE: File/New/Application

10 Створюємо COM об’єкт: File/New/Other/COM Object

11 Називаємо CoClass: CoClass Name=My

12 Вказуємо раніше створений інтерфейс:

Interface/List/Add/Interface1 (знайти у списку)

13 Refresh Implementation

14 У метод TMyImpl::Method1 вставте код:

{

*Param2=Param1*2;

return S_OK;

}

15 Refresh Implementation

16 Run

17 File/Save Project As...

18 File/Close All

 

Створюємо COM клієнта

19 Створюємо додаток: File/New/Application

20 Помістіть на форму поле і кнопку.

21 Добавте до модуля cpp:

#include "Project1_TLB.cpp"

22 В метод TForm1::Button1Click вставте код:

{

TCOMInterface1 obj;

obj=Project1_tlb::CoMy::Create();

double x;

obj->Method1(2,&x);

Edit1->Text=AnsiString(x);

}

23 File/Save Project As... Назвіть модуль Client, а проект ProjectClient.

24 Run.

Повинен появитись результат: 4.

 

Створюємо COM клієнта у VBA

25 На форму добавляємо поле і кнопку.

26 Вибираємо створену бібліотеку типів:

Tools/References/Project1 Library

27 Записуємо код:

Private Sub CommandButton1_Click()

Dim obj As New My

Dim x As Double

obj.Method1 2, x

TextBox1.Text = x

End Sub

28 Run

Повинен появитись результат: 4.

8 Створення компоненту ActiveX у C++ Builder

Постановка задачі: створити і використати ActiveX компонент на основі класу VCL TButton.

Послідовність виконання:

1 Закрити все: File/Close All

2 Добавити новий ActiveX компонент: File/New/Other.../ActiveX Control

3 Вибрати VCL клас, на основі якого створюється ActiveX компонент і ім’я ActiveX компоненту:

VCL Class Name: TButton,

New ActiveX Name: ButtonX,

Натиснути OK.

4 Зберегти проект: File/Save Project As...

5 Зареєструвати ActiveX сервер: Run/Register ActiveX Server

Використання створеного ActiveX компоненту ButtonX

Послідовність виконання:

1 Відкрити MS Excel

2 Вибрати Сервис/Макрос/Редактор Visual Basic

3 Вставити нову форму: Insert/User Form

4 Добавити додатковий компонент ButtonX: Tools/Additional Controls, вибрати ButtonX Control

5 Добавте компонент ButtonX1 на форму

6 Відкрити код програми: View/Code

7 Добавте в код процедуру (див. рис.):

Private Sub ButtonX1_OnClick()

ButtonX1.Caption = "Hello"

End Sub

8 Виконати програму: Run/Run

Відміна реєстрації ActiveX серверу ButtonX

Послідовність виконання:

1 Відкрити збережений проект у C++ Builder: File/Open Project.../ButtonXControl1.bpr

2 Відмінити реєстрацію: Run/Unregister ActiveX Server

Створення активної форми (Active Form)

Постановка задачі: створити і використати активну форму ActiveX.

Послідовність виконання:

1 Закрити все: File/Close All

2 Добавити нову форму Active Form: File/New/Other.../Active Form

3 Помістити на форму три компоненти TEdit і один TButton

4 Запрограмуйте функцію оброки події OnClick для Button1:

void __fastcall TActiveFormX::Button1Click(TObject *Sender)

{

float a,b;

a=StrToFloat(Edit1->Text);

b=StrToFloat(Edit2->Text);

Edit3->Text=a+b;

}

5 Зберегти проект: File/Save Project As...

6 Зареєструвати ActiveX сервер: Run/Register ActiveX Server



Поделиться:


Последнее изменение этой страницы: 2017-01-24; просмотров: 196; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.227.73 (0.005 с.)