Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Подскажите


Рекомендуемые сообщения

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:

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;
Изменено пользователем Сергей Плоткин
Ссылка на комментарий
Поделиться на другие сайты

Спасибо, но есть ещё одна проблема.

Интервал таймера стал отбражаться как надо (часы, минуты, секунды), но мне надо что бы интервал отображался реально, то есть если Timer1.Interval=10000, то на Label интервал убывал, а он стоял постоянно равным 10 секундам.

Ссылка на комментарий
Поделиться на другие сайты

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:

Можно, хотя я и объяснил тебе все по шагам...

Юнит:

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
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...