skilk Опубликовано 4 августа, 2005 Жалоба Поделиться Опубликовано 4 августа, 2005 Как сделать что бы на Label отображался интервал таймера в часах, минутах, секундах. Ссылка на комментарий Поделиться на другие сайты Поделиться
Slalom Опубликовано 4 августа, 2005 Жалоба Поделиться Опубликовано 4 августа, 2005 Privet. Ya napisal kod v C++ Builder. Polu4ilos tak: Esli 4to mojesh popravit. void __fastcall TForm1::Timer1Timer(TObject *Sender) { static sec=0,min=59,hour=23; static temp=0; temp=temp+Timer1->Interval; if(temp>=1000) { temp=0; sec=sec+1; } if(sec>59) { sec=0; min=min+1; if(min>59) { min=0; hour=hour+1; } } if(hour>23) hour=0; Label1->Caption=IntToStr(hour)+" : "+IntToStr(min)+" : "+IntToStr(sec); } Ссылка на комментарий Поделиться на другие сайты Поделиться
skilk Опубликовано 5 августа, 2005 Автор Жалоба Поделиться Опубликовано 5 августа, 2005 А на Delphi как выглядеть будет? Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей Плоткин Опубликовано 6 августа, 2005 Жалоба Поделиться Опубликовано 6 августа, 2005 (изменено) skilk: function TimerInterval2Time(TimerInterval:Integer):TTime;var Hour,Min,Sec:Word;begin Hour:=Trunc(TimerInterval/3600000); TimerInterval:=TimerInterval-(Hour*3600000); Min:=Trunc(TimerInterval/60000); TimerInterval:=TimerInterval-(Min*60000); Sec:=Trunc(TimerInterval/1000); Result:=EncodeTime(Hour, Min, Sec, 0);end; procedure TForm1.Button1Click(Sender: TObject);begin Label1.Caption:=TimeToStr(TimerInterval2Time(543634));end; Изменено 6 августа, 2005 пользователем Сергей Плоткин Ссылка на комментарий Поделиться на другие сайты Поделиться
skilk Опубликовано 6 августа, 2005 Автор Жалоба Поделиться Опубликовано 6 августа, 2005 Спасибо, но есть ещё одна проблема. Интервал таймера стал отбражаться как надо (часы, минуты, секунды), но мне надо что бы интервал отображался реально, то есть если Timer1.Interval=10000, то на Label интервал убывал, а он стоял постоянно равным 10 секундам. Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей Плоткин Опубликовано 6 августа, 2005 Жалоба Поделиться Опубликовано 6 августа, 2005 skilk: Тебе обратный отсчет что-ль нужен таким жутким способом? Тогда делай так: 1) Прописывай глобальную переменную Amount типа Integer, равную нулю по-умолчанию 2) Интервал таймера ставь в одну секунду (1000) 3) в OnTimer пиши: const Int=10000;begin Amount:=Amount+1000; If Int-Amount>0 then Label1.Caption:=TimeToStr(TimerInterval2Time(Int-Amount)) else begin Timer1.Enabled:=False; ShowMessage('Done'); end;end; Ссылка на комментарий Поделиться на другие сайты Поделиться
skilk Опубликовано 9 августа, 2005 Автор Жалоба Поделиться Опубликовано 9 августа, 2005 А на каком-нибудь примере можно? Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей Плоткин Опубликовано 10 августа, 2005 Жалоба Поделиться Опубликовано 10 августа, 2005 skilk: Можно, хотя я и объяснил тебе все по шагам... Юнит: unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;type TForm1 = class(TForm) Label1: TLabel; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; Amount: Integer=0;implementation{$R *.dfm}function TimerInterval2Time(TimerInterval:Integer):TTime;varHour,Min,Sec:Word;beginHour:=Trunc(TimerInterval/3600000);TimerInterval:=TimerInterval-(Hour*3600000);Min:=Trunc(TimerInterval/60000);TimerInterval:=TimerInterval-(Min*60000);Sec:=Trunc(TimerInterval/1000);Result:=EncodeTime(Hour, Min, Sec, 0);end;procedure TForm1.Timer1Timer(Sender: TObject);constInt=10000;beginAmount:=Amount+1000;If Int-Amount>0 thenLabel1.Caption:=TimeToStr(TimerInterval2Time(Int-Amount)) else begin Timer1.Enabled:=False; ShowMessage('Done'); end;end;end. Форма: object Form1: TForm1 Left = 192 Top = 114 Width = 870 Height = 640 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 32 Top = 24 Width = 87 Height = 13 Caption = 'Обратный отсчет' end object Timer1: TTimer OnTimer = Timer1Timer Left = 232 Top = 240 endend Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти