HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Az időt visszafelé számoló komponens készítése


Példaprogram letöltése

5582 bájt

A CountDown komponens egy olyan számláló, amely visszafelé számolja az időt és mindig a hátralévő időt mutatja. Nagyon jól használható például egy olyan programban, ahol a felhasználónak egy feladatlapot kell megoldania. A hátralévő idő jelzése mellett alkalmas arra, hogy eseményeket kössünk az idő múlásához és leteléséhez. Ilyenkor esetleg inaktívra állíthatunk minden szerkesztő mezőt, hogy a felhasználó tényleg ne tudja azokat használni.

A mellékelt példaprogram megnyitása előtt a CountDown.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens Time tulajdonságán keresztül adhatjuk meg azt az időt, ahonnan visszafelé akarunk számolni. A Font tulajdonság beállításával és a komponens méretének megváltoztatásával állíthatjuk be a kijelző nagyságát. Az óra akkor indul el, amikor az Enabled tulajdonságot igazra állítjuk. Az Enabled tulajdonság hamisra állításával bármikor megállíthatjuk, majd azt újra igazra állítva ismét elindul.
Az órát bármikor újraindíthatjuk a Restart metódussal. Ha kíváncsiak vagyunk az éppen mutatott időre, akkor azt a GetTime metódussal lekérdezhetjük.
A komponens rendelkezik egy OnTimer eseménnyel, amely minden egyes másodpercben létrejön. Amikor az idő lejárt, létrejön az OnStop esemény.
A komponenst a TGraphicControl osztályból származtatjuk.
Az épp aktuális idő tárolására létrehozunk egy új típust.
TCountTime = record
    Hour: ShortInt;
    Min: ShortInt;
    Sec: ShortInt;
  end;
Az FCountTime, TCountTime típusú változó fogja tárolni az éppen aktuális időt. Az idő csökkentéséhez szükséges egy TTimer objektum is. Ennek az OnTimer eseményében csökkentjük az FCountTime értékét, valamint itt kell gondoskodnunk az OnTimer és OnStop események létrejöttéről is.
if Assigned(FOnStop) then FOnStop(Self);
if Assigned(FOnTimer) then FOnTimer(Self);
Ha az idő letelik, akkor az Enabled tulajdonság értékét hamisra kell állítani.
Az FCountTime változó a SetTime metódusban kapja meg kezdő értékét.
procedure TCountDown.SetTime(Value: TTime);
var
  s: String;
begin
  FTime:=Value;
  s:=TimeToStr(Value);
  with FCountTime do begin
    if Length(s)=8 then Hour:=StrToInt(s[1]+s[2])
    else Hour:=StrToInt(s[1]);
    ...
Mivel a Time tulajdonság TTime típusú, ha szöveggé konvertáljuk 7 vagy 8 jegy hosszúságú szöveget kaphatunk. Az óra rész ugyanis egy vagy két karakteres lehet, a többi mindig kettő. Ennek megfelelően kell meghatároznunk az órát, percet és másodpercet.
Az időzítő megrajzolását és frissítését a Paint metódus felülírásával tudjuk megvalósítani. Az idő kiírásához a TCanvas osztályt fogjuk használni. Azért, hogy a komponens méretéhez viszonyítva, mindig középen helyezkedjen el az idő, relatív koordinátákat kell számolnunk az alábbi módon.
Canvas.TextOut(Width div 2-Canvas.TextWidth(s) div 2,Height div 2-Canvas.TextHeight(s) div 2,s);
Fontos, hogy mindig két karakteren írjuk ki az órát, percet és másodpercet. Ehhez ellenőriznünk kell az egyes időegységek hosszát.
if Length(IntToStr(Sec))=2 then s:=s+IntToStr(Sec)
    else s:=s+'0'+IntToStr(Sec);
Az idő lekérdezését a GetTime függvénnyel tehetjük meg. Itt nem kell ügyelnünk a két karakter hosszú időegységekre, mert a függvény visszatérési értéke TTime. Az alábbi konvertálás úgyis két karakter hosszúvá alakítja át a percet és a másodpercet.
Result:=StrToTime(s);
A Restart metódusban az idő újraindításához egyszerűen meg kell hívnunk a SetTime metódust.
SetTime(FTime);

Cikksorozat

#IDKategóriaCikk címeSorozat
1099DelphiDBChart komponens felhasználása1. rész
1113DelphiTDBChart komponens2. rész
1122DelphiTDBChart komponens3. rész
1132DelphiTDBChart komponens4. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 685. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |