Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

Таймер   Найти похожие ветки 

 
>BeRDor<   (2006-06-02 18:46) [0]

Почитал в учебнике, толком ниче не понял про него. Нужно, допустим сделать так - Запускаеться прога, одновременно запускаеться Timer, потом после нажатия на кнопку, таймер остонавливаеться и время выводиться в окно сообщения. Пробывал сделать так:

var
 ...
   ColTime:TDateTime;
 ...
В create формы
  Var
     ...
       ht, mt, st, mst:word;
  ...
    form1.Timer1.Enabled := True;
       ColTime := Time;
  ...
В OnClick
    ...
     DecodeTime((Time-ColTime)/MaxTick, ht, mt, st, mst);
     showmessage(IntToStr(st)+ "  секунд");
    ...


после запуска, и нажатия на кнопку он показывает неправильное кол-во секунд. В чем ошибка?


 
Eraser ©   (2006-06-02 18:52) [1]


> >BeRDor<   (02.06.06 18:46)

не правильно понял суть работы таймера.
Тут таймер вообще не нужен.


 
>BeRDor<   (2006-06-02 18:55) [2]

Ну нужен или нет, эт решать мне)) А в чем ошибка то? Как можно сделать? Или допустим жмешь одну кнопку, таймер запускаеться, жмешь другую - останавиливаеться--- как такое сделать?


 
palva ©   (2006-06-02 19:03) [3]

> А в чем ошибка то? Как можно сделать?
Ошибка зависит от того, что вы хотите сделать.


 
ZV ©   (2006-06-02 19:07) [4]

Таймер генерирует последовательность событий. Ты в процедуру Таймера пишешь команды которые будут беспрерывно выполнятся пока запущен таймер (true) получается типа круговорота которому ты можешь задать частоту (Interval).


 
Virgo_Style ©   (2006-06-02 19:19) [5]

>BeRDor<   (02.06.06 18:55) [2]

Если ты решил, что нужен, то зачем нужен - решать тоже тебе


 
TUser ©   (2006-06-02 19:34) [6]

При создании формы запоминаешь время

FStartTime := now();

При нажатии на кнопку

Label1.Caption := ...


 
>BeRDor<   (2006-06-03 16:33) [7]

Наверно неправильно выразазился. Вообщем мне нада сделать так.

Окно, в нем Label. Когда нажимаешь на кнопку СТАРТ, запускаеться секундомер (который я пытался сделать с помощью таймера), жмешь кнопку СТОП, секундомер останавливаеться и в LABEL выводиться время. Мож кто поможет Plz....


 
>BeRDor<   (2006-06-03 16:42) [8]

Хм...тока что сделал.

...
Var
a:integer;
...

...
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(a);Label1.Caption:= IntToStr(a);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Enabled:=false;
Label1.Caption:= IntToStr(a);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=false;
end;

end.


Все работает, но не понял, что такое Interval (ставлю 10 000 вроде счетчик идет примерно так же как и секунды) и что такое Tag ? И как "извлеч" минуты?


 
antonn ©   (2006-06-03 16:59) [9]

Interval - кол-во миллисекунд до срабатывания обработчика OnTimer.
Tag - "на всякий случай":)


> Окно, в нем Label. Когда нажимаешь на кнопку СТАРТ,
> запускаеться секундомер (который я пытался сделать с
> помощью таймера), жмешь кнопку СТОП, секундомер
> останавливаеться и в LABEL выводиться время. Мож кто
> поможет Plz....

можно и без таймера прошедшее время найти.
var dd:Tdatetime;

procedure TForm1.Button1Click(Sender: TObject);
begin
dd:=now;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption:=formatdatetime("nn:ss:zzzz",now-dd);
end;


 
>BeRDor<   (2006-06-03 18:20) [10]

To antonn ©
Сенкс !


 
ZV ©   (2006-06-04 00:34) [11]

Вот дался тебе этот таймер. Держи код и вникай в суть Timer. Тут тебе и минут и секунды и Interval. Экспериментируй. Читай комментарии , но знай, команда  Timer нужна не для измерения времени, конечно можно делать и это, но это не её основная задача. С помощью этой команды в основном делается повторения тех команд которые ты вставишь в процедуру  Timer.
Ниже код
unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Panel1: TPanel;
   Button1: TButton;
   Button2: TButton;
   Timer1: TTimer;
   procedure Button2Click(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 min,sec:integer; // минуты/секунды

implementation

{$R *.dfm}

// Процедура обработки события Click для левой кнопки ("Запуск/Стоп").
procedure TForm1.Button1Click(Sender: TObject);
begin
 if Timer1.Enabled
   then
      // Если секундомер работает,
      begin
         Timer1.Enabled:=False;   // то останавливаем таймер.
         Button1.Caption:="Пуск"; // Меняем название кнопки со "Стоп" на "Пуск".
         Button2.Enabled:=True;   // Кнопка "Сброс" теперь доступна.
      end
    else
      // Если секундомер не работает,
      begin
         Timer1.Enabled:=True;     // то запускаем таймер.
         Button1.Caption:="Стоп";  // Меняем название кнопки с "Пуск" на "Стоп".
         Button2.Enabled:=False;   // Кнопка "Сброс" теперь недоступна.
      end;
end;

// Процедура обработки события таймера.
procedure TForm1.Timer1Timer(Sender: TObject);
var str:string;
begin
if sec = 59 then      // Если кол-во секунд равно 59,
   begin              // то увеличиваем минуты на 1,
     inc(min);        // а секунды обнуляем.
     sec := 0;
   end                // В противном случае просто
   else               // наращиваем секунды.
     inc(sec);
   // формируем строку в формате m:ss.
   str := str + IntToStr(sec);
   if Length(str) = 1 then str := "0" + str;

   str := IntToStr(min) + ":" + str;
   Panel1.Caption := str;
end;

// Процедура обработки события Click для правой кнопки ("Сброс").
procedure TForm1.Button2Click(Sender: TObject);
begin
 sec := 0;
 min := 0;
 Panel1.Caption := "0:00";
end;

end.



Страницы: 1 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.054 c
15-1148922206
Ломброзо
2006-05-29 21:03
2006.06.25
Штрих-кодирование


15-1148890599
Creative_ltd
2006-05-29 12:16
2006.06.25
меню Internet Explorer`а


2-1149774642
Nikolaich
2006-06-08 17:50
2006.06.25
Как программно переместить splitter?


2-1149349597
Lammmerrr
2006-06-03 19:46
2006.06.25
Передача параметров форме


2-1149694353
Цукор5
2006-06-07 19:32
2006.06.25
DWord в String