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

       Najpierw napiszmy naszego mutatora:

//-------------------------------------------------
void __fastcall TLED::SetOnOff(const bool Value)
{
	FOnOff = Value; // ustawia stan FOnOff
	Brush->Color = (FOnOff)?FOnColour:FOffColour;
}
//---------------------------------------------------------
void __fastcall TLED::SetOnColour(const TColor OnColour)
{
	FOnColour = OnColour;
	Brush->Color = (FOnOff)?FOnColour:FOffColour;
}
//---------------------------------------------------------
void __fastcall TLED::SetOffColour(const TColor OffColour)
{
	FOffColour = OffColour;
	Brush->Color = (FOnOff)?FOnColour:FOffColour;
}
//---------------------------------------------------------
      Widzisz - bułka z masłem... Teraz przejdźmy do konstruktora. On ustawi wszystkie nasze domyślne właściwości w inspektorze obiektów:

__fastcall TLED::TLED(TComponent* Owner)
	: TShape(Owner)
{
 Width = 15; // ustawia szerokość na 15
 Height = 15; // ustawia wysokość na 15
 FOnColour = clLime; // ustawia OnColour na jasno zielony
 FOffColour = clRed; // ustawia OffColour na czerwony
 FOnOff = false; // domyślnie dioda jest wyłączona
 Shape = stEllipse; // ustawia kształt na elipsę
 Pen->Color = clBlack; // ustawia kolor pióra na czarny
 Pen->Width = 1; // ustawia szerokość pióra na 1
 Brush->Color = FOffColour; // Ustawia domyślny kolor pędzla
}
      Powyższy powinien być zrozumiały. Wartości są ustawiane w konstruktorze, a kiedy umieszczamy komponent na formie konstruktor jest automatycznie wywoływany. W ten sposób możemy zmieniać te wartości już w fazie projektowania, a nie tylko za pomocą kodu.

__fastcall TLED::TLED(TComponent* Owner)
 : TShape(Owner),
  FOnColour(clLime), // ustawia OnColour na jasno zielony
  FOffColour(clRed) // ustawia OffColour na czerwony
{
  Width = 15; // ustawia szerokość na 15
  Height = 15; // ustawia wysokość na 15
  Shape = stEllipse; // ustawia kształt na elipsę
  Pen->Width = 2; // ustawia szerokość pióra na 2
  Brush->Color = FOffColour; // ustawia domyślny kolor komponentu
}
Uwaga: jest kilka sposobów inicjalizacji zmiennych w konstruktorze, równie dobrze może to wyglądać tak:

__fastcall TLED::TLED(TComponent* Owner)
  : TShape(Owner), FOnColour(clLime), FOffColour(clRed), Width(15),
   Height(15), Shape(stEllipse), Pen->Width(2),Brush->Color(FOffColour)
	{}
      Ważne jest też, że fOnOff nie musi być inicjalizowane, ponieważ zmienna bool jest domyślnie false, w odróżnieniu od innych typów, które muszą być inicjalizowane. Ja jednak myślę, że dobry styl programowania wymaga inicjalizacji wszystkich właściwości.

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