InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте







Размещение сквозной ссылки

 

Как создать компонент


Не стоит сразу пытаться скомпилировать даже самый простой компонент в библиотеку компонентов или пакетную библиотеку, если вы не убедились окончательно, что он работает. Поэтому лучше создать тестовую программу для его отладки, чем мы сейчас и займемся.

Шаг 1: Создание тестового приложения

  1. Создайте новое приложение (File | New Application).
  2. Добавьте на форму ближе к низу компонент TButton.
  3. Теперь выберите File | Save All, и сохраните форму как LEDForm.cpp и проект как LEDProj.

Шаг 2: Создание компонента

  1. Выберите Component | New, или, в C++Builder v1 File | New, и выберите Component в диалоге New File Items.
  2. Установите Ancestor type в TShape, имя класса TLED, а Palette Page в "Samples". Щелкните "OK", не нажимайте "Install" если вы используете версию 3 или старше (мы это проделаем потом)!
  3. Затем сохраните новый файл компонента. Если вы используете C++Builder v1 сохраните его под именем LED.cpp (несмотря на то, что по умолчанию unit1.cpp).
Создание нового компонента

Теперь, когда предварительные действия завершены, давайте посмотрим, что же сгенерировал C++ Builder. Файл LED.cpp будет выглядеть примерно так ( не волнуйтесь, если будет слегка отличаться - в разных версиях по-разному):

//-----------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "LED.h"
#pragma package(smart_init)
//-----------------------------------------------------------------
//-----------------------------------------------------------------
static inline void ValidCtrCheck(TLED *)
{
	new TLED(NULL);
}
//-----------------------------------------------------------------
//-----------------------------------------------------------------
__fastcall TLED::TLED(TComponent* Owner)
       	: TShape(Owner)
{
}
//-----------------------------------------------------------------
//-----------------------------------------------------------------
namespace Led
{
	void __fastcall PACKAGE Register()
	{
		TComponentClass classes[1] = {__classid(TLED)};
		RegisterComponents("Samples", classes, 0);
	}
}
//-----------------------------------------------------------------
//-----------------------------------------------------------------

Первая функция, ValidCtrCheck, используется для того, чтобы убедиться, что ваш компонент не имеет чистых виртуальных функций (и соответственно, не является абстрактным классом). Вам не надо беспокоиться о ней или менять ее.

Следующая функция (первое, что действительно является частью нового класса TLED) - конструктор. Он вызывается, когда компонент помецается на форму, так что все его характеристики, в том числе и те, которые будут видны в Object Inspector получают значения по умолчанию именно здесь.

Третья функция регистрирует компонент. Пространства имен позволяют библиотекам (в данном случае компонентам) использовать одни и те же имена без конфликтов (на самом деле, конечно, тут все немного сложнее, но сейчас не надо об этом беспокоиться). TComponentClass содержит массив имен компонентов, которые надо зарегистрировать (в одной этой функции вы можете зарегистрировать столько компонентов, сколько вы желаете). Более подробно эта функция (т.е. если вы хотите написать свою, вместо той, что подставил Builder) описана в разделе "Writing The Register Function" вашего Component Writers Guide.

[Назад][Вперед]


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua