Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delfi_1.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
341.5 Кб
Скачать

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 в процесі виконання

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]