Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Часы в потоке

335
17 апреля 2006 года
enola
379 / / 25.01.2005
Добрый день!
Поправьте, если данное решение не совсем правильное (вообще правильно ли так делать):

Код:
__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. есть желание реализовать часы в потоке.
8.7K
17 апреля 2006 года
Rubicon
55 / / 28.10.2005
Ну... вроде как все верно...
А что, таймером воспользоваться несудьба?:)
335
18 апреля 2006 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by Rubicon

А что, таймером воспользоваться несудьба?:)



попробовал, но что-то не получилось у меня событие прикрутить ручками, никогда просто не делал. Буду признателен если подскажешь как?

8.7K
18 апреля 2006 года
Rubicon
55 / / 28.10.2005
Цитата:
Originally posted by enola
попробовал, но что-то не получилось у меня событие прикрутить ручками, никогда просто не делал. Буду признателен если подскажешь как?


самое простое решение --- уноследовать свой компанент от таймера и переписать OnTime. А обработка событие прикручивается макросом

 
Код:
BEGIN_MESSAGE_MAP
  MESSAGE_HANDLER(...)
  MESSAGE_HANDLER(...)
  ...
END_MESSAGE_MAP

Для полной информации просмотри раздел хелпа "Creating Custom Components", в частности разделы "Handling messages" и "Creating events", там все подробно рассказано (не хочу засорять форум тем, что можно найти в хелпе).

И еще, чтобы все было хорошо с твоем копмоп во время работы таймера (который потоковый), вставь после Synchronize
 
Код:
Sleep(1);

иначе этот поток будет безбожно жрать процессорное время (99%).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог