
- •Створення елементів управління ActiveX
- •Розробка елементів управління ActiveX
- •Створення ActiveX з компонентів vcl Delphi
- •Створення ActiveX з форм
- •1. Розробка елементів управління ActiveX
- •2. Створення ActiveX з компонентів vcl Delphi
- •Ріс.2. Елемент управління RichEdit в редакторові бібліотеки типів
- •2. Створення ActiveX з форм
- •Рекомендована література
2. Створення ActiveX з форм
Даний спосіб створення елементів управління дозволяє на базі власної форми додатки створити елемент ActiveX. Цей спосіб носить назва ActiveForms.
Спробуємо створити елемент управління ActiveX з форми. Виконаємо наступні кроки:
1. Викличемо майстер ActiveForm. Для цього виберемо пункт головного меню File/New (Файл/новий), і перейшовши на вкладку ActiveX виберемо піктограму ActiveForm. З'явиться вікно майстра (Рис. 4).
Як можна бачити, даний майстер дуже схожий на майстра перетворення компоненту VCL Delphi в елемент управління ActiveX. Але відзнака відразу впадає в очі. У полі імені класу VCL Class Name (Ім'я класу VCL) майстер автоматично встановлює значення TActiveForm.
Рис. 4. Діалогове вікно майстра ActiveForm
2. У полі New ActiveX Name (Нове ім'я ActiveX) нам потрібно ввести ім'я створюваного елементу управління ActiveX. Введемо ім'я MyForm, при цьому автоматично стануться зміни в інших полях (вони описані вищим для майстра ActiveX Control).
3. Після натиснення кнопки ОК майстер створює всі необхідні заготовки для елементу управління ActiveX (практично так само, як і у попередньому випадку). Поверхня форми MyForm стає робочою поверхнею. Ви можете розміщувати на ній довільні компоненти, описувати методи і події компонентів і форми, встановлювати їх властивості.
Розмістимо на формі MyForm два компоненти CоmВох, як показано на рис.4.
Рис. 4. Форма MyForm
Внесемо до властивості items для першого компоненту Сотьовох значення, відповідні назвам місяців з січня по грудень. У властивість items другого компоненту Сотьовох внесемо значення, які відповідають назвам днів тижня з понеділка по воскресіння. Отже, при натисненні на перший список в нім повинні відображуватися назви місяців, а при натисненні кнопки другого списку - назви днів тижня.
В принципі, ми вже створили елемент управління ActiveX. Але даний елемент управління буде даремним, оскільки нам необхідно, щоб вибрані в списках значення передавалися користувачеві. Для цього потрібно створити інтерфейс з користувачем елементу управління.
Для вирішення даного завдання нам необхідно додати в бібліотеку типів елементу управління в інтерфейс IMyForm дві нові властивості. Назвемо їх, наприклад, Month і Day. Відкриємо редактор бібліотеки типів за допомогою пункту головного меню View/Type Library (Проглядання/Бібліотека типів). Працювати з нею нам вже доводилося, тому не буде складним додати до інтерфейсу IMyForm властивості Month і Day (Рис. 3.30).
Тепер потрібно відновити модуль реалізації MyFormImpl1. Для чого необхідно натискувати кнопку Refresh Implementation (Відновити реалізацію) у верхній панелі інструментів редактора бібліотеки типів. При цьому в обох файлах проекту з'являються описи нових властивостей, а у файлі реалізації - заготовки коду (листинг4 ).
Лістинг 4
function TMyForm.Get_Day: Integer;
begin
end;
function TMyForm.Get_Month: Integer;
begin
end;
procedure TMyForm.Set_Day(Value: Integer);
begin
end;
procedure TMyForm.Set_Month(Value: Integer);
begin
end;
Рис. 5. Редактор бібліотеки типів з доданими в інтерфейс IMyForm властивостями Month і Day
Як ми бачимо, були додані дві заготівки для функцій Get і дві заготівки для процедур set. Функції Get призначені для передачі значення властивості в програму, що викликала дану функцію. Процедури Set служать для передачі і установки необхідних параметрів.
Заповнимо ці заготовки таким чином (лістинг 5):
Лістинг 5
function TMyForm.Get_Day: Integer;
begin
Result:=ComboBox2.Itemlndex;
end;
function TMyForm.Get_Month: Integer;
begin
Result: =ComboBoxl. Itemlndex;
end;
procedure TMyForm.Set_Day(Value: Integer);
begin
ComboBox2.Itemlndex:=value;
end;
procedure TMyForm.Set_Month(Value: Integer);
begin
ComboBoxl.Itemlndex:=value;
end;
Передавані значення властивостей Day і Month, що приймаються, в нашому випадку мають типа integer, хоча ви могли привласнити даним властивостям іншого типа в редакторові бібліотеки типів в процесі створення цих властивостей.
Ми створили елемент управління ActiveX на основі форми. Тепер залишилося лише відкомпілювати проект і встановити елемент управління в палітру компонентів.
Спробуємо використовувати даний елемент управління ActiveX в своєму застосуванні. Створимо новий проект. Розмістимо на нім елемент управління ActiveX MyForm. Крім того, розташуємо на формі чотири кнопки і два компоненти Edit (рис.6).
Ріс.6. Зовнішній вигляд додатка, що використовує елемент управління ActiveX MyForm
На лістингу 6 приведений код для додатка, зовнішній вигляд якого представлений на Рис. 6.
Лістинг 6
unit Unitl;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, MyFormProjlJTLB;
type
TForml = class(TForm)
MyForml: TMyForm;
GetMonth: TButton;
Editl: TEdit;
GetDay: TButton;
Edit2: TEdit;
SetMonth: TButton;
SetDay: TButton;
Label1: TLabel;
Label2: TLabel;
procedure GetMonthClick(Sender: TObject);
procedure GetDayClick(Sender: TObject);
procedure SetMonthClick(Sender: TObject)';
procedure SetDayClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Forml: TForml;
implementation {$R *.DFM}
procedure TForml.GetMonthClick(Sender: TObject);
begin
Editl.Text:=IntToStr(MyForml.Month+1);
end;
procedure TForml.GetDayClick(Sender: TObject);
begin
Edit2.Text:=IntToStr(MyForml.Day+1);
end;
procedure TForml.SetMonthClick(Sender: TObject);
begin
MyForml.Month:=StrToInt(Edit1.Text)-1;
end;
procedure TForml.SetDayClick(Sender: TObject);
begin
MyForml.Day:=StrToInt(Edit2.Text)-1;
end;
end.
При натисненні на будь-яку з двох кнопок, розміщених на формі зліва (GetMonth і GetDay), ви отримаєте порядковий номер значення з потрібного списку компоненту MyForm (оскільки нумерація елементів списку CоmВох на чинается з нуля, то ми додаємо до значення, що набуває, одиницю) у відповідне поле редагування Edit. Натиснення будь-якій з кнопок справа на формі (setMonth і setDay) приведе до передачі значення з необхідного поля редагування Edit в елемент управління ActiveX. При цьому станеться установка відповідної властивості елементу MyForm.
Роботу даного застосування ілюструє рис.7
Рис. 7 Додаток, використовуюче ActiveX в процесі виконання