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







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

 

Легкая часть - написание .cpp файла. Сначала давайте напишем код мутаторов:


//---------------------------------------------------------------------------
void __fastcall TLED::SetOnOff(const bool Value)
{
	FOnOff = Value; // Set the state of 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;
}
//---------------------------------------------------------------------------

Легче не бывает :)) Теперь надо написать конструктор. В нем будут устанавливаться значения по умолчанию, которые будут видны в object inspector:


__fastcall TLED::TLED(TComponent* Owner)
	: TShape(Owner)
{
	Width = 15;	 // Установим ширину нашего LED в 15.
	Height = 15;	 // Установим высоту нашего LED в 15.
	FOnColour = clLime;	 // Установим OnColour лимонно-зеленым.
	FOffColour = clRed;	 // Установим OffColour красным.
	FOnOff = false;	 	// Сосотояние по умолчанию - выключено
	Shape = stEllipse;	 // Форма по умолчанию - эллипс
	Pen->Color = clBlack;	 // Цвет пера - черный
	Pen->Width = 1;	 // Толщина пера 1
	Brush->Color = FOffColour;	 // Цвет кисти одинаков с цветом по умолчанию
}

Опять все достаточно прозрачно. Эти значения будут установлены, когда компонент поместят на форму и при этом автоматически будет вызван конструктор. Несмотря на это, мы можем менять эти значения и во время проектирования, а не только во время выполнения.

Замечание: существует несколько способов инициализации переменных в конструкторе. Вышеприведенный пример можно было написать и так:


__fastcall TLED::TLED(TComponent* Owner)
	: TShape(Owner),
	  FOnColour(clLime), // установить OnColour в лимонно-зеленый
	  FOffColour(clRed) // установить OffColour красным
{
	Width = 15;	 // Установим ширину нашего LED в 15.
	Height = 15;	 // Установим высоту нашего LED в 15.
	Shape = stEllipse;	 // Форма по умолчанию - эллипс
	Pen->Color = clBlack;	 // Цвет пера - черный
	Pen->Width = 2;	 // Толщина пера 2
	Brush->Color = FOffColour;	 // Цвет кисти одинаков с цветом по умолчанию
}

А можно и так:


__fastcall TLED::TLED(TComponent* Owner)
	: TShape(Owner), FOnColour(clLime), FOffColour(clRed), Width(15),
	  Height(15), Shape(stEllipse), Pen->Width(2),Brush->Color(FOffColour)
	{}

Также важно понимать, что fOnOff инициализировать не обязательно, так как тип bool имеет встроенное значение по умолчанию(false), в отличие от большинства простых типов C++, которые автоматически не инициализируются. Тем не менее, считается хорошим стилем инициализировать значения всех свойств.

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


Реклама на InfoCity

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



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








1999-2009 © InfoCity.kiev.ua