Главная » C++, C++ Builder » Использование управляющих элементов ActiveX в CBuilder

0

Используются управляющие элементы ActiveX в CBuilder так же, как и любые  другие управляющие элементы. Вы выбираете управляющий элемент со страницы палитры компонентов ActiveX (или куда вы его положили) и кладете его на форму. Устанавливаете нужные вам свойства, оставляя  неизменными некоторые значения по умолчанию, а остальное управляющий элемент сделает сам. Основная разница между ActiveX и VCL проявляется при установке, когда вам нужно поставлять не только исполняемый файл приложения, а все OCX-файлы для управляющих элементов ActiveX. Кроме того, вам нужно зарегистрировать новые управляющие элементы ActiveX в той системе, куда вы их устанавливаете.

Динамическое создание управляющих элементов

Один из наиболее частых вопросов в отношении использования управляющих элементов ActiveX в CBuilder является вопрос о динамическом создании ссылки на управляющий элемент ActiveX во время работы приложения (вместо использова ния дизайнера форм для добавления в  форму ссылки на элемент). Вы можете подумать, что это должно делаться легко, так как CBuilder относится к управляющим элементам ActiveX так же, как к компонентам VCL, и будете правы.

Замечание

Полный  исходный  код  для  этого  примера  можно  найти  на  сопроводительном  компакт-диске  в каталоге  Chapter6\DynActive.

Давайте возьмем простой пример, в котором создается ссылка на объект VCFormulaOne при создании формы. Для этого вам нужно знать несколько вещей. Во-первых, вам нужно изменить заголовочный файл формы, чтобы были подключены нужные заголовочные файлы. В отличие от VCL заголовочные файлы для управляющих элементов ActiveX не подключаются компилятором в ваш проект автоматически. В дополнение к заголовочному файлу вы должны описать указатель на компонент для использования при создании управляющего элемента. Вот модифицированный заголовочный файл (Unit1.h) с изменениям и, выделенными подсветкой:

//———————————————————————————

#ifndef Unit1H

#define Unit1H

//———————————————————————————

#include <vcl\Classes.hpp>

#include <vcl\Controls.hpp>

#include <vcl\StdCtrls.hpp>

#include <vcl\Forms.hpp>

#include <vcl\VCFrmla1.hpp>

#include <vcl\OleCtrls.hpp>

//———————————————————————————

class TForm1 : public TForm

{

__published: // IDE-managed components ActiveX и CBuilder Professional

private: // User declarations TVCFormulaOne  *VCFormulaOne1; public: // User declarations

__fastcall TForm1(TComponent *Owner);

};

//———————————————————————————

extern TForm1 *Form1;

//———————————————————————————

#endif

Как только вся предварительная работа сделана, вам остается только создать сам управляющий элемент. Добавьте обработчик для события формы OnCreate, щелкнув дважды на форме. Добавьте следующий код в метод формы FormCreate:

void __fastcall TForm1::FormCreate(TObject *Sender)

{

VCFormulaOne = new TVCFormulaOne(this); VCFormulaOne->Parent = this; VCFormulaOne->Left = 10;

VCFormulaOne->Top = 10;

VCFormulaOne->Width = ClientWidth-20; VCFormulaOne->Height = ClientHeight-20; VCFormulaOne->Visible = true;

}

Как вы видите из предыдущего кода, нет разницы  между  созданием управляюще го элемента ActiveX и компонента любого другого типа. Вы должны создать экземпляр компонента через оператор new и затем присвоить  его свойству Parent  (родитель)  (которое  автоматически генерирует CBuilder) форму, на которой этот элемент будет проживать. Как только управляющий элемент создан и свойству Parent  присвоено  значение,  остальные  свойства  определяются обычным образом. Свойства Left, Top, Width и Height поддерживаются CBuilder автоматически при генерации «обертки».

Источник: Теллес М. – Borland C++ Builder. Библиотека программиста – 1998

По теме:

  • Комментарии