Podstawy pisania komponentów      Strona 2 z 9        Dalej
w oparciu o materiały ze stron The Bits

       Tworzenie komponentu

      Jedną z pierwszych rzeczy, których się nauczyłem jest to, że nawet najprostszy komponent należy najpierw przetestować, zanim zostanie on skompilowany i dodany do biblioteki komponentów, czy też pakietu. Najlepiej więc stworzyć testową aplikację i dynamicznie kompilować komponent.

      Krok 1: Tworzenie aplikacji

1. Utwórz nową aplikację (File | New Application).
2. Dodaj przycisk TButton i umieść gdzieś na dole formy.
3. Teraz wybierz (File | Save All) i zapisz formę jako LEDForm.cpp i projekt jako LEDProj

      Krok 2: Tworzeni komponentu

1. Wybierz (Component | New), albo w C++ Builer 1 (File | New) i wybierz Component w okienku New File Items.
2. Ustaw przodka (Ancestor type) na TShape, wpisz TLED jako nazwę klasy (Class Name), i paletę (Palette Page) "Samples". Teraz kliknij "OK". Nie klikaj przypadniem "Install"!
3. Następnie zapisz plik komponentu jako LED.cpp



      Teraz, kiedy skończyliśmy wstępne działania, zobaczmy co zrobił za nas C++ Builder. Jeżeli otworzysz plik LED.cpp powinieneś zobaczyć coś takiego:

//-----------------------------------------------------------------
#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);
	}
}
//-----------------------------------------------------------------

      Pierwsza funkcja, ValidCtrCheck, jest po to, żeby wykluczyć czysto wirtualne funkcje. Nie potrzebujesz tego zmieniać ani martwić się o to, ponieważ nie jest to w zasadzie częścią Twojego komponentu.

      Druga funkcja to konstruktor. Jest wywoływana w momencie umieszczenia komponentu na formie, więc wszelkie standardowe właściwości powinieneś ustawić właśnie tutaj.

      Trzecia funkcja rejestruje komponent. Przestrzenie nazw (Namespaces), pozwalają bibliotekom, a w tym przypadku komponentom, na używanie tej samej nazwy bez konfliktu (w zasadzie to trochę bardziej skomplikowane, ale nie musisz się wcale o to martwić). Klasa TComponentClass zawiera tablicę komponentów, które mają być zarejestrowane (w jednej funkcji Register możesz zarejestrować większą liczbę komponentów).

Uwaga: Autorzy oraz The Bits, nie ponoszą odpowiedzialności za ewentualne szkody wynikłe z postępowania według zasad tego samouczka.
(c)1997 Kris Erickson. (c)1999 Will Green.
Tłumaczenie:  Maciek Frankiewicz

1  2  3  4  5  6  7  8  9