Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Cannon
3 / 3 / 0
Регистрация: 05.02.2011
Сообщений: 116
1

Таймер. Отсчет с 00.

15.06.2011, 19:34. Просмотров 802. Ответов 8
Метки нет (Все метки)

Здравствуйте.
Подскажите пожалуйста, как мне сделать, чтобы отсчет отображался с цифры 00, доходил до 15, и опять сбрасывался на 00? Должны отображаться (00,01,02,03,04,05 и т.д. до 15)?

Вот код, но он начинается с (0,1,2,3 и т.д.):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
var
r:Integer;
 
procedure TForm1.Timer1Timer(Sender: TObject);
 begin
 
r:=r+1;
label1.Caption := IntToStr(r);
if r=15 then begin
r:=-1;
 
end;
end;
 
end.
 Комментарий модератора 
Теги кода исправлены модератором. По правилам форума, код должен быть оформлен соответствующими тегами. Для оформления кода Delphi следует выделить этот код и на панели редактирования сообщения нажать кнопку "DELPHI".
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2011, 19:34
Ответы с готовыми решениями:

Таймер должен считать от 60 сек до 0. По нажатию кнопки застывать на этом значении, а при повторном продолжать отсчет
Как сделать что бы таймер вел отсчет времени от 60 секунд до 0 после нажатия на...

Обратный отсчет
Здравствуйте! Нужно сделать обратный отсчет, от нового года до сегодняшнего...

Обратный отсчет
Возможно-ли организовать обратный отсчет при том, чтобы он не сбрасывался после...

Обратный отсчет в Label
как сделать чтобы при нажатии на кнопку спомощью таймера начался обратный отщет...

Неправильный отсчет в таймере
Проблема состоит в том, что таймер пропускает секунды...

8
deathNC
1892 / 1005 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
15.06.2011, 19:54 2
Случай для двух цифр:
Delphi
1
2
If Length(Label1.Caption) < 2 then
  Label1.Caption := '0' + Label1.Caption;
Случай для n цифр
Delphi
1
2
While Length(Label1.Caption) < n do
  Label1.Caption := '0' + Label1.Caption;
n тут сам задаёшь (Integer)...

Любой из способов в 37 строку вставляй...
1
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
15.06.2011, 19:54 3
у таймера ставим интервал секунду
и пишем в таймере
Delphi
1
2
3
4
5
6
7
8
r:=r+1;
if r>15 then
begin
r:=0;
end;
if r<10 then
label1.caption:='0'+inttostr(r);
else label1.caption:=inttostr(r);
при создании формы пишем r:=0;

вроде бы так..
1
Arcor
5035 / 1912 / 407
Регистрация: 20.11.2009
Сообщений: 6,251
Записей в блоге: 1
15.06.2011, 20:02 4
ну-ну и будет оно считать 010, 011,012 и так далее..
0
deathNC
1892 / 1005 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
15.06.2011, 20:07 5

Не по теме:

Arcor, :) правильно подметил!



Добавлено через 53 секунды

Не по теме:

Конечно 010 не будет, но всё таки...

0
Cannon
3 / 3 / 0
Регистрация: 05.02.2011
Сообщений: 116
15.06.2011, 20:48  [ТС] 6
У меня немного не получается, привожу в пример новый код, посмотрите пожалуйста, там когда переменная n = 10, то отображается как (010,011,012,013,014 и тд), как убрать этот 0 в начале?
Должно доходить до 23 и опять сбрасываться на 00:00.

Код:

Код
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormShow(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var
r:Integer;
n:Integer;
 f:Integer;
t:Integer;

procedure TForm1.FormShow(Sender: TObject);
begin
r:=0;
 n:=0;
 f:=0;
 t:=0;
label1.caption:=inttostr(r)+inttostr(n)+':'+inttostr(f)+'0';

end;

procedure TForm1.Timer1Timer(Sender: TObject);
 begin

f:=f+1;
label1.caption:='0'+inttostr(n)+':'+inttostr(f)+'0';
if f=5 then

begin
n:=n+1;

f:=-1;

if n=24 then

begin
n:=0;
end;
end;
end;

end.
0
Arcor
5035 / 1912 / 407
Регистрация: 20.11.2009
Сообщений: 6,251
Записей в блоге: 1
15.06.2011, 20:54 7
элементарно и просто
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
  Form1: TForm1;
  k: Integer;
implementation
 
{$R *.dfm}
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  k := k+1;
  if k >= 10 then
    Caption := IntToStr(k)
  else
    Caption := '0'+IntToStr(k);
 
  if k = 23 then
    k := 0;
end;
1
deathNC
1892 / 1005 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
15.06.2011, 21:02 8
n я писал для n цифр... не числа 10, а 10 цифр
0000000001
0000000002
так должно быть
если n = 2 то
01
02
...
10
11
...
1000
1001

А в твоём коде, cannon, вообще левое что-то...
n не изменяется в работе таймера!!!
1
Cannon
3 / 3 / 0
Регистрация: 05.02.2011
Сообщений: 116
15.06.2011, 21:06  [ТС] 9
Спасибо большое, это я уже понял, но мне надо, чтобы отсчитывалось время, я его в последнем коде привел, то-есть сначала выводится в Label 00:00, потом последняя пара цифр по таймеру переключатся на (10,20,30,40,50) и потом к первой паре цифр начинает прибавляться +1, но у меня если первая пара цифр больше 9, то уже идёт 0(010:00) и тд, а как убрать этот 0 именно в моём коде, не пойму маленько(((

Вот код, подправьте плиз:

Код
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormShow(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var
r:Integer;
n:Integer;
 f:Integer;
t:Integer;

procedure TForm1.FormShow(Sender: TObject);
begin
r:=0;
 n:=0;
 f:=0;
 t:=0;
label1.caption:=inttostr(r)+inttostr(n)+':'+inttostr(f)+'0';

end;

procedure TForm1.Timer1Timer(Sender: TObject);
 begin

f:=f+1;
label1.caption:='0'+inttostr(n)+':'+inttostr(f)+'0';
if f=5 then

begin
n:=n+1;

f:=-1;

if n=24 then

begin
n:=0;
end;
end;
end;

end.
0
15.06.2011, 21:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2011, 21:06

Обратный отсчет в FormatDateTime
Доброго времени суток, CF! Я бы хотел узнать ответ на вопрос, можно ли в...

Обратный отсчет на панельке
Доброго времени суток форумчане!! Пытаюсь реализовать обратный отсчет времени...

Обратный отсчет времени
Очень срочно нуждаюсь в совете: Я работаю над плеером и решил создать дисплей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru