![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
// фон и сам рисунок часов. 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:
Дата публикования: 2014-11-04; Прочитано: 323 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!