| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
Как создать компонент Не стоит сразу пытаться скомпилировать даже самый простой компонент в библиотеку компонентов или пакетную библиотеку, если вы не убедились окончательно, что он работает. Поэтому лучше создать тестовую программу для его отладки, чем мы сейчас и займемся. Шаг 1: Создание тестового приложения
Шаг 2: Создание компонента
Теперь, когда предварительные действия завершены, давайте посмотрим, что же сгенерировал 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. |
|
| ||||||||||||||||
|