skilk Posted August 4, 2005 Report Share Posted August 4, 2005 Как сделать что бы на Label отображался интервал таймера в часах, минутах, секундах. Quote Link to comment Share on other sites More sharing options...
Slalom Posted August 4, 2005 Report Share Posted August 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); } Quote Link to comment Share on other sites More sharing options...
skilk Posted August 5, 2005 Author Report Share Posted August 5, 2005 А на Delphi как выглядеть будет? Quote Link to comment Share on other sites More sharing options...
Сергей Плоткин Posted August 6, 2005 Report Share Posted August 6, 2005 (edited) 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; Edited August 6, 2005 by Сергей Плоткин Quote Link to comment Share on other sites More sharing options...
skilk Posted August 6, 2005 Author Report Share Posted August 6, 2005 Спасибо, но есть ещё одна проблема. Интервал таймера стал отбражаться как надо (часы, минуты, секунды), но мне надо что бы интервал отображался реально, то есть если Timer1.Interval=10000, то на Label интервал убывал, а он стоял постоянно равным 10 секундам. Quote Link to comment Share on other sites More sharing options...
Сергей Плоткин Posted August 6, 2005 Report Share Posted August 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; Quote Link to comment Share on other sites More sharing options...
skilk Posted August 9, 2005 Author Report Share Posted August 9, 2005 А на каком-нибудь примере можно? Quote Link to comment Share on other sites More sharing options...
Сергей Плоткин Posted August 10, 2005 Report Share Posted August 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.