Секудномер
Как мне создать секундомер, который будет отображаться на Label???
TTimer не пробывал использовать?:)
TTimer не пробывал использовать?:)
Пробовал. Не получилось. Трудно объяснить чтоли??
Пробовал. Не получилось. Трудно объяснить чтоли??
TTimer автоматом отсчитывает по 1000 млс = 1с (свойство Interval). У него есть событие OnTimer, которое вызывается по прошествии заданного (Interval) времени. Туда и пристрой свою процедуру обновления Label'а.
PS:
Enabled - включает и выключает таймер.
TTimer автоматом отсчитывает по 1000 млс = 1с (свойство Interval). У него есть событие OnTimer, которое вызывается по прошествии заданного (Interval) времени. Туда и пристрой свою процедуру обновления Label'а.
PS:
Enabled - включает и выключает таймер.
Если же заговорили о таймере,то пожалуйста напишите прогу где через каждие 5 сек.назва Label меняется(с использованием таймера).Знаю что ето просто но у меня не получается!
на форму ставишь два компонента: TLabel и TTimer, таймеру ставишь интервал равный 5000 мс (5 сек.) и проверяешь что стоит Enabled = true. Затем в событии OnTimer пишешь следующий код:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
static int Flag = 0;
if(!Flag)
{
Label1->Caption = "Пять секунд, пять секунд...";
Flag = 1;
}
else
{
Label1->Caption = "Это много или мало?";
Flag = 0;
}
}
в результате через каждые 5 секунд текст лабела будет меняться...
Если поставить интервал равным 1000 мс и в событии написать следующий код:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
static int Count = 0;
Label1->Caption = Count++;
}
это и будет секундомер, будет каждую секунду менять значение счетчика. только надо следить чтобы за границы int не вылезло...
Мне нужно сделать обычные часы, которые идут с 00:00:00.
Ну тогда напиши процедуру Timer1Timer так:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
static int seconds = 0;
seconds++;
String h = String(seconds/3600<10?"0":"")+IntToStr(seconds/3600);
String m = String(seconds%3600/60<10?"0":"")+IntToStr(seconds%3600/60);
String s = String(seconds%60<10?"0":"")+IntToStr(seconds%60);
Label1->Caption = h+":"+m+":"+s;
}
Ну тогда напиши процедуру Timer1Timer так:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
static int seconds = 0;
seconds++;
String h = String(seconds/3600<10?"0":"")+IntToStr(seconds/3600);
String m = String(seconds%3600/60<10?"0":"")+IntToStr(seconds%3600/60);
String s = String(seconds%60<10?"0":"")+IntToStr(seconds%60);
Label1->Caption = h+":"+m+":"+s;
}
Нет на таймере часы не делают.
Сделай на Idle вызов системных часов и вычитай время запуска. Все. Ну если не знаешь как, то
блин учись методом научного тыка.:D
метод научного тыка - самый наукчный метод! :)
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TBegin=Time();
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Label1->Caption=TimeToStr(Time()-Tbegin);
}
Мне кажется тип того...
Сделай на Idle вызов системных часов и вычитай время запуска
Типа этого?
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){
Application->OnIdle = &IdleHandler;
StartTime = Time();
}
void __fastcall TForm1::IdleHandler(TObject *Sender,bool &Done) {
Done = false;
Label1->Caption = TimeToStr(Time()-StartTime);
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
static int Flag = 0;
if(!Flag)
{
Label1->Caption = TimeToStr(Time());
Flag = 1;
}
else
{
Label1->Caption = TimeToStr(Time());
Flag = 0;
}
}
Типа этого?
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){
Application->OnIdle = &IdleHandler;
StartTime = Time();
}
void __fastcall TForm1::IdleHandler(TObject *Sender,bool &Done) {
Done = false;
Label1->Caption = TimeToStr(Time()-StartTime);
}
Как вариант самое то:}