__fastcall TClockThread::TClockThread(bool CreateSuspended)
: TThread(CreateSuspended)
{
FreeOnTerminate = True;
}
//---------------------------------------------------------------------------
void __fastcall TClockThread::Execute()
{
do
Synchronize(UpdateTime);
while (!Terminated);
}
//---------------------------------------------------------------------------
void __fastcall TClockThread::UpdateTime()
{
TDateTime DateTime = Time();
AnsiString Time = TimeToStr(DateTime);
Form1->StatusBar1->Panels->Items[0]->Text = Time;
}
//---------------------------------------------------------------------------
Часы в потоке
Поправьте, если данное решение не совсем правильное (вообще правильно ли так делать):
Код:
P.S. есть желание реализовать часы в потоке.
А что, таймером воспользоваться несудьба?:)
Цитата:
Originally posted by Rubicon
А что, таймером воспользоваться несудьба?:)
А что, таймером воспользоваться несудьба?:)
попробовал, но что-то не получилось у меня событие прикрутить ручками, никогда просто не делал. Буду признателен если подскажешь как?
Цитата:
Originally posted by enola
попробовал, но что-то не получилось у меня событие прикрутить ручками, никогда просто не делал. Буду признателен если подскажешь как?
попробовал, но что-то не получилось у меня событие прикрутить ручками, никогда просто не делал. Буду признателен если подскажешь как?
самое простое решение --- уноследовать свой компанент от таймера и переписать OnTime. А обработка событие прикручивается макросом
Код:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(...)
MESSAGE_HANDLER(...)
...
END_MESSAGE_MAP
MESSAGE_HANDLER(...)
MESSAGE_HANDLER(...)
...
END_MESSAGE_MAP
Для полной информации просмотри раздел хелпа "Creating Custom Components", в частности разделы "Handling messages" и "Creating events", там все подробно рассказано (не хочу засорять форум тем, что можно найти в хелпе).
И еще, чтобы все было хорошо с твоем копмоп во время работы таймера (который потоковый), вставь после Synchronize
Код:
Sleep(1);
иначе этот поток будет безбожно жрать процессорное время (99%).