Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.009 c
3-1146332166
Express
2006-04-29 21:36
2006.06.25
ADOCommand – как перейти на следующую запись???


15-1148715019
Kolan
2006-05-27 11:30
2006.06.25
Помогите настроить ADSL дома...


3-1146571342
Суслик
2006-05-02 16:02
2006.06.25
Распределенные транзакции в MSSQL Server


4-1143536482
Shazer
2006-03-28 13:01
2006.06.25
Net


2-1149512127
VitV
2006-06-05 16:55
2006.06.25
interbase+delphi удаление блоб





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский