Инициализируем растры TBitmap, в которых будут хранится

//фон и сам рисунок часов. FBGBitmap:= TBitmap.Create; FFont:=TFont.Create;;

FBitmap:= TBitmap.Create; FBitmap.Width := Width; FBitmap.Height := Height;


 

//Выставляем формат времени
DateFormat:='tt';

//Запускаем таймер Ticker := TTimer.Create( Self); //Интервал работы таймера -одна секунда Ticker.Interval := 1000; //По событию OnTimer будет вызыватсья процедура TickerCall Ticker.OnTimer := TickerCall; //Включаем таймер Ticker.Enabled := true;

//Устанавливаем цвета поумолчанию FFaceColor := clBtnFace; FHourArrowColor := clActiveCaption; FMinArrowColor := clActiveCaption; FSecArrowColor := clActiveCaption;

end;

Ключевое слово inheritedвызывает конструктор предка (в нашем случае TGraphicClock). Это необходимо, потому что предок тоже может делать что-то важное в конструкторе и если мы не вызовем его конструктор, то могут возникнуть проблемы.

В остальном, я надеюсь, что с конструктором всё ясно. Дальше идёт инициализация переменных. Я постарался снабдить код подробными комментариями, чтобы ты смог разобраться с происходящим. Сами переменные мы пока не добавили и я их буду описывать постепенно.

Теперь создадим деструктор. Для этого также опишем его в разделе public:

public { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy; override;

Деструктор тоже объявляется как простая процедура, но здесь стоит ключевое слово destructor. Теперь жмём Ctrl+Shift+C и получаем заготовку для деструктора и поправляем её до вида :

destructor TGraphicClock.Destroy;

begin Ticker.Free; FBitmap.Free; FBGBitmap.Free; inherited Destroy;

end;

Здесь я освобождаю всю память выделенную для хранения картинок и объекта TTimer в конструкторе. Заметь, что в конструкторе я вызывал предка в самом начале inherited, а в деструкторе в самом конце. В конструкторе сначала нужно, чтобы инициализировался предок (он проинициализирует необходимые ссылки), а потом можно инициализировать свои вещи. В деструкторе всё наоборот – сначала уничтожает мы, а потом предок. Если в деструкторе мы сначала вызовем предка, то последующая работа с компонентом уже может быть невозможна, потому что предок уничтожит все ссылки. Поэтому я ставлю этот вызов в самом конце.

Теперь опишем все необходимые нам переменные в разделе private: