Форум: "Начинающим";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизТаймер Найти похожие ветки
← →
>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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.01 c