|
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
|
|
|