Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Члены данных, свойства и методы




Ознакомившись с заготовками программного модуля компоненты, которые создал для нас C++Builder, можно приступить к написанию собственно кода компоненты. Прежде всего, в файле LED.h опишем булеву переменную состояния индикатора и две переменные перечисляемого типа TColor для хранения цветов, отображающих оба состояния. Из главы 3 об основах объектно-ориентированного программирования мы знаем как ограничивать область видимости и уяснили, что эти члены данных следует спрятать в секции private объявлений класса. Там же расположим прототипы функций записи соответствующих свойств, а сами свойства объявим в секции _ published (Листинг 6.15).

//---------------________________________________-_____-_--

#ifndef LEDH

#define LEDH //------------_____-_____--_________________________-___--.

#include <vcl\SysUtils.hpp>

#include <vcl\Controls.hpp>

#include <vcl\Classes.hpp>

#include <vcl\Forms.hpp> ^include <vcl\ExtCtrls.hpp> //____----------__________________________________------—

class TLED: public TShape { private:

bool FOnOff;TColor FOnColor; TColor FOffColor;

void _fastcall SetOnOff(const bool Value);

void _fastcall ' SetOnColor

void _ fastcall SetOffColor (conet TColor OffColor);

protected:

public:

_fastcall TLED(TComponent* Owners- published:

property bool LEDOn= { read= FOnOff,write= SetOnOff); property ТСоlог OnColor= { read=FOnColor,write=SetOnColor};:.,. __property TColor OffColor=

{ read=FOff Color, write= SetOffColor};

};

//_____________-___-_----____________------------------——

#endif

Листинг 6.15. Добавления в файл LED.h модуля компоненты.

Еще проще окажутся добавления в файл LED.cpp (Листинг 6.16). Необходимо написать три функции для присвоения значений свойств соответствующим членам данных, а также наполнить конструктор компоненты инструкциями для инициализации переменных.

#include <vcl\vcl.h>

#pragma hdrstop

# include "LED.h" //_-------—----—-____--------—---.————---—---—----—--

static inline TLED *ValidCtrCheck() {

return new TLED(MULL);

)

void _fastcall TLED::SetOnOf?(const bool Value) {

POnOff = Value;

Brush->Color ” (POnOff)? FOnColor: POffColor?

}

//_———————————————-——-^-.-——.————.——————

void _fastcall TLED::SetOnColor(const TColor OnColor) {

POnColor = OnColor;

Brush->Color = (FOnOff)? FOnColor: FOffColor;

}

//-—---——-„--—--------————----------——--———---—--

void _fastcall TLED::SetOЈfColor(const TColor OffColor) {

FOffColor = OffColor;

Brush->Color = (FOnOff)? FOnColor: FOffColor;

}

//---_------------------------------------------------------

_fastcall TLED::TLED(TComponent* Owner): TShape(Owner)

{

Width = 15; // тирина по умолчанию Height = 15; // высота по умолчанию FOnColor = cILime; // зеленый, когда включен FOffColor = cIRed; // красный, когда выключен FOnOff = false; // выключен по умолчанию Shape? atEllipse; //в форме эллипса по умсвдчани Pen->Color = clBlack; // черный контур по умолчанию Pen->Width = 2; // ширина контура по уйолчанию Brush->Color ^ FOffColor; // цвет заливки по умолчанию

}

//---------------____-______________________--________.

namespace Led

{

void _fastcall Register () {

TComponentClass classes[1] = {__ classid(TLED)};

RegisterComponents("Samples", classes, 0);

} }

Листинг 6.16. Добавления в файл LED.cpp модуля компоненты.

Установленные конструктором значения членов данных по умолчанию па вятся в окне Инспектора объектов при создании объекта индикатора. Дейстительно, при помещении компоненты на форму конструктор вызывается автоматически. В результате появляется возможность менять значения свойств компоненты не только во время выполнения программы, но и на стадии проектирования приложения. *





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 387 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Настоящая ответственность бывает только личной. © Фазиль Искандер
==> читать все изречения...

2364 - | 2087 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.