Delphi FAQ

Timer od podstaw

Maciusiak

Objaśnienie stosowania timer'a by maciusiak

Timer jest prosty w obsłudze, wywołuje uruchomienie dowolnej funkcji po upływie czasu wybranego przez ciebie.
Aby wkleić Timer'a na formę należy przejść do zakładki:
SYSTEM -> TIMER i wkleić go na formę...
Tam gdzie Timer1 tam wprowadź jego poprawna nazwę (tak jak go nazwałeś)
Timer1.Interval:=1000; - Czas aktywacji Timera po 1000ms (w milisekundach i można zmienić czas).
Timer1.Enabled:=True; - Aktywacja Timer'a.
Timer1.Enabled:=False; - Blokada Timer'a

timer1mn6.jpg

unit MainFrm;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls;
 
type
  TMainForm = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  MainForm: TMainForm;
 
implementation
 
uses pomoc;
 
{$R *.dfm}
 
procedure TMainForm.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=True;
end;
 
procedure TMainForm.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=False;
MessageBox(0, 'Timer zablokowany!', 'Timer', MB_OK);
end;
 
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
MessageBox(0, 'Timer aktywny w pracy d(*_*)b', 'Timer', MB_OK);
end;
 
procedure TMainForm.Button3Click(Sender: TObject);
begin
Timer1.Interval:=1000;
end;
 
procedure TMainForm.Button4Click(Sender: TObject);
begin
Timer1.Interval:=3000;
end;
 
procedure TMainForm.Button5Click(Sender: TObject);
begin
Form1.Show;
end;
 
end.

Timer.zip

12 komentarzy

Do autora: Do czasu aż nie nauczysz się ortografii, zasad formatowania kodu, zasad redagowania artów, ogólnego poziomu merytorycznego to odpuść sobie takie pisanie. Nie wiem czy zdajesz sobie sprawę, że pisanie arta pociąga za sobą pewną odpowiedzialność. Dlaczego? Ktoś to przeczyta i będzie się stosował do wskazówek. Potem nauczy kogoś, gdzie ten ktoś znowu nauczy. Jaki morał? Reakcja łańcuchowa - popatrz jak formatujesz kod i zobacz co właśnie zaczynajacy się nauczą - złego formatowania (u Ciebie to wręcz jego brak) do tego niskiego poziomu merytorycznego i nie będą zwracać uwagi na błędy ortograficzne. Ja też czasem je robię ale nie k***a po trzy w każdym zdaniu! Poza tym przemyśl co chcesz napisać w artykule i zrób to ciekawie. Jak piszesz FAQ to przemyśl jaka wskazówka ma się tam znaleźć. Najlepiej aby była troszkę bardziej złożona, bo Twoje kody w 78% generuje kompilator. Póki co to szkoda Twojego czasu na pisanie w takim stylu. Ty się narobisz a nikt nie wykorzysta bo to podstawy. Poza tym FAQ zawiera odpowiedzi na naprawdę nagminne pytania a art wypadałoby aby był dość długi i opisywał zagadnienie wyczerpująco, czyli jak dajesz timer to opisz jak on wygląda z poziomu kodu (czy jest to wątek, przerwanie zegarowe, itp.). Ale przede wszystkim napisz o czymś ciekawym, czego jeszcze nie ma w serwisie.

Moja uwaga jest taka
Buttony jak i inne "części " należy odpowiednio nazywać , samo Button1 Button2 ... nic nie mówi
dobrym zwyczajem jest nazywać komponenty podając Skrót od rodzaju komponentu i jego nazwę np BtnStart BtnStop w obecnej postaci to można arta killnąć

Lofix, nie proponuj takiego stylu pisania! Po co porównywać do true, czemu nie używasz array [Boolean] of String zamiast tych if'ów, czemu nie negujesz stanu aktywacji Timera? Raczej tak to powinno wyglądać :

var  en:Boolean;
const  btn:array  [Boolean]  of  String=(('Włącz  timer'),  ('Wyłącz  timer'));
lbl:array  [Boolean]  of  String=(('Timer  wyłączony'),  ('Timer  włączony'));
begin
Timer1.Enabled:=not  Timer1.Enabled;
en:=Timer1.Enabled;
Label1.Caption:=lbl[en];
Button1.Caption:=btn[en];  
end;
 

Zaś co do arta, dać go tam skąd go lukasz1235 wyniósł??

Do czego ma to służyć?
Jakoś nie dopatrzyłem się, co ten "artykuł" opisuje
Może mi ktoś to wytłumaczyć?

Poza tym można zrobić estetyczny jeden guzik do wł/wył timer`a

procedure TMainForm.BtnTimer(Sender: TObject);
begin
If Timer1.Enabled = true then
begin
Timer1.Enabled:=False;
Label1.Caption:= 'Timer wyłączony';
BtnTimer.Caption:= 'Włącz timer';
end else begin
Timer1.Enabled:=True;
Label1.Caption:= 'Timer włączony';
BtnTimer.Caption:= 'Wyłącz timer';
end;
end;

Maciusiak: zainstaluj sobie wreszcie ff... wreszcie ci bedzie błedy poprawiał!!! artykuł przez u otwarte.. http://so.pwn.pl/lista.php?co=artyku%B3

Czemu? Bo był tragicznie napisany. I nie do usunięcia, tylko dałem go Do poprawy.

http://4programmers.net/Timer_dla_zielonych_bymaciusiak(nie_kopiowac) nowy link do niego.
I dzięki za to ze ocaliłeś mój artykuł. Pozdro.

To moj artykół :-) thx ludzie za uratowanie. A wiecie czemu go chcieli wywalic?

No dobra, jak nie to nie, to usuwaj templatkę i przenoś gdzie chcesz.

Możesz sobie zaliczyć uratowanie artykułu, sztuk 1 ;P.

W sumie możesz, ja jeszcze poprawię błąd jeden. A, ja ten szablon dałem i arta wyniosłem. Chociaż w sumie, może poczekajmy na kogoś wyżej postawionego, niech sam wyniesie do odpowiedniego działu i templatkę usunie?

Poprawiłem, ale nie wiem czy o to chodziło. Można już usunąć szablon "Do poprawy"?