Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2009, 15:59   #1
Bilargo
Форумчанин
 
Аватар для Bilargo
 
Регистрация: 17.09.2009
Сообщений: 231
По умолчанию Таймер обратного отсчета

В общем ситуация, я пишу таймер обратного отсчета минут и секунд, проблема заключается в выводе этого таймера после задачи данных переменных.

Код:
var
  Form1: TForm1;
  Min, cek :Integer;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
begin
  Min:=StrToInt(edt1.Text);
  Cek:=StrToInt(edt2.Text);
  tmr1.Enabled:=True;
end;


procedure TForm1.tmr1Timer(Sender: TObject);
begin
 lbl3.Caption:=IntToStr(min)+':'+IntTOstr(cek); // вот это поле предполагается для вывода счетчика, оно в форме растянуто над остальными компонентами. Значение в нем Visible=False.
 cek:=cek-1;
 if cek=0 then
 min:=min-1;
 cek:=60;
 if min=0 then
 cek:=60;
 if cek=0 then
  begin
   tmr1.Enabled:=False;
   ShowMessage('Отсчет окончен');
   end;
end;
Цитата:
Относись к людям так, как хочешь, чтоб относились к тебе!

Последний раз редактировалось Stilet; 30.09.2009 в 16:22.
Bilargo вне форума Ответить с цитированием
Старый 30.09.2009, 16:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю свой вариант таймера с обратным отсчетом.
До секунд.
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var     dt:TTime;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 dt:=EncodeTime(0,StrToIntDef(Edit1.Text,0),StrToIntDef(Edit2.Text,0),0);
 Timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 caption:=FormatDateTime('nn:ss',dt);
 dt:=IncSecond(dt,-1);
 if dt=0 then
  TTimer(sender).Enabled:=false;
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.09.2009, 16:47   #3
Bilargo
Форумчанин
 
Аватар для Bilargo
 
Регистрация: 17.09.2009
Сообщений: 231
По умолчанию

Выдает вот здесь ошибку:

dt:=IncSecond(dt,-1);
[Error] Unit1.pas(44): Undeclared identifier: 'IncSecond'
Цитата:
Относись к людям так, как хочешь, чтоб относились к тебе!
Bilargo вне форума Ответить с цитированием
Старый 30.09.2009, 16:56   #4
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

а по поводу ошибки DateUtils пропишите в Uses
вот вам 3 вида таймера
Вложения
Тип файла: rar Таймер.rar (18.6 Кб, 127 просмотров)
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 30.09.2009, 16:56   #5
Bilargo
Форумчанин
 
Аватар для Bilargo
 
Регистрация: 17.09.2009
Сообщений: 231
По умолчанию

Мммм....нет! Всё в норме, забыл Uses переписать, но счетчик он всё равно не выдает почему-то...
Цитата:
Относись к людям так, как хочешь, чтоб относились к тебе!
Bilargo вне форума Ответить с цитированием
Старый 30.09.2009, 16:57   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
function IncSecond(ATime: TDateTime; Seconds : Integer): TDateTime;
begin
  Result := ATime +  ( Seconds * 1000  / MSecsPerDay);
  if Result < 0 then
    Result := Result + 1;
end;
p.s. DateUtils в Delphi5 не было ещё.. поэтому привожу код...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.09.2009, 17:02   #7
Bilargo
Форумчанин
 
Аватар для Bilargo
 
Регистрация: 17.09.2009
Сообщений: 231
По умолчанию

Спасибо всем Вроде разобрался)))
Цитата:
Относись к людям так, как хочешь, чтоб относились к тебе!
Bilargo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция обратного вызова и таймер на WinApi flug Win Api 4 17.09.2009 16:06
Содержание прямого или обратного набора Big-kit Общие вопросы Delphi 1 04.06.2009 17:02
Таймер Михаил Юрьевич Общие вопросы Delphi 1 16.07.2008 08:46
Таймер обратного отсчета на С Raptor Помощь студентам 6 08.01.2008 01:11
Таймер Stanislav Общие вопросы Delphi 3 26.11.2007 06:52