[ Druid @ 03.10.2003. 16:37 ] @
Ovako muci me jedna stvar, ne znam napraviti count down
na internetu sam nasao par komponenti ali to nista neradi, kada god pokren program sa takvim komponenta delphi mi zablokira
Moze li mi netko objasniti kako napravi Count Down bez componenti tj. iz citog coda
bez komponenti.
Hvala
[ markom @ 03.10.2003. 16:42 ] @
Sta je "count down" ?
[ Druid @ 03.10.2003. 16:44 ] @
count down ti je timer koji broji vrijeme unazad
naprimjer od 20 to 0
[ markom @ 03.10.2003. 16:54 ] @
Citat:
Druid:
count down ti je timer koji broji vrijeme unazad
naprimjer od 20 to 0


U cemu je problem koristiti obicnu timer kontrolu? Uz malo kreativnosti, mozes vreme da prikazes i unazad. Ne mogu da ti napisem tacan primer (ne trosim Pascal/Delphi), ali:

Timer ima neki OnTimer event koji "okida" svake sekunde. Postavis tajmer da broji, a u drugom delu programa definises broj sekundi kad ti se zavrsava countdown. Recimo 20s. Prikazes na ekran: 00:BrojSekundi. Kad tajmer okine, prikazes na ekran: 00:BrojSekundi-1, itd... Efektivno imas countdown. Mozes i da pratis dokle je ono "-1" stiglo, pa kad se istrosi zadati broj sekundi, "okines" event koji kaze da je vreme isteklo...


Marko.
[ morlic @ 03.10.2003. 18:46 ] @
Definisi promenjivu "Vreme : integer" u npr. public sekciji forme. Stavis na formu TTimer i jedan button. Za button OnClick postavi:

Code:

procedure TForm1.Button1Click(Sender: TObject);
begin
     Vreme := GetTickCount;
     Timer1.Enabled := true;
end;


Postavis Timer1.Interval na 1000 (1 sekunda) i Enabled = False, pa na OnTimer event postavis kod:

Code:

procedure TForm1.Timer1Timer(Sender: TObject);
Var Razlika : dword;
    sati, minuti, sekunde : integer;
begin
     Razlika := 7000 - ((GetTickCount - Vreme) div 1000);
     Sati := Razlika div 3600;
     Minuti := (Razlika - (Sati * 3600)) div 60;
     Sekunde := (Razlika - (Sati*3600) - (Minuti*60));
     Caption := Format('%d : %d : %d', [Sati,Minuti,Sekunde]); 

     if Razlika <= 0 then Timer1.Enabled := false;
end;


Onih "7000" gore predstavljaju pocetnu vrednost za odbrojavanje. U tvom primeru tu bi pisalo "20". Ostaje da prilagodis kod nekoj nameni.


[ Druid @ 03.10.2003. 19:46 ] @
Hvala Ljudi radi

Nisam znao da to moze biti tako jednostavno....

Morlic vidim da si radio dword mozes li mi na mail poslati kako se on opcenito koriste
naime treba mi za jedan program da mi izvadi nesto iz regedita i disable ga

moj mail je :

[email protected]

Puno HVALA!!!
[ byTer @ 04.10.2003. 00:31 ] @
Citat:
Druid:
moj mail je :
[email protected]

Puno HVALA!!!


Brisi ovaj mail ima da te zatrpaju spammeri!
[ morlic @ 04.10.2003. 00:48 ] @
Evo ti ove dve funkcije koje mozes da koristis za pristup registry bazi preko TRegistry klase koju dobijas uz Delphi. Funkcije citaju i pisu integer vrednosti.

Primer

Code:

...
Var i : integer;
...
if Int_LoadFromReg(i, 
                          HKEY_CURRENT_USER,
                          '\SOFTWARE\Druid\Proba', 
                          'NazivPodatka')
   then radi nesto sa "i"
...



Code:

function Int_LoadFromReg( Var Value : integer; DefaultRootKey : HKEY, Key, ValueName : string ) : boolean;
Var Reg : TRegistry;
begin
      Result:=false;
      Reg := TRegistry.Create;
      try
        Reg.RootKey := DefaultRootKey;
        if Reg.OpenKey( Key, True)
        then begin
               if Reg.ValueExists( ValueName ) then begin
               Value:=Reg.ReadInteger( ValueName );
               Result:=true;
               end;
        Reg.CloseKey;   
        end;
      finally
      Reg.Free;
      end;

end;
function Int_SaveToReg( Value : integer; DefaultRootKey : HKEY, Key, ValueName : string ) : boolean;
Var Reg : TRegistry;
begin
     Result:=false;
      Reg := TRegistry.Create;
      try
        Reg.RootKey := DefaultRootKey;
        if Reg.OpenKey( Key, True)
        then begin
        Reg.WriteInteger( ValueName, Value );
        Reg.CloseKey;
        end;
      finally
      Reg.Free;
      end;

      Result:=true;
end;
[ morlic @ 04.10.2003. 00:56 ] @
Inace dword je tip podatka:

DWORD = Longword

a Longword je tip podatka koji moze da memorise brojeve u
rasponu 0..4294967295, sto se kaze "unsigned 32-bit"
tj. neoznaceni tridesetdvobitni broj.


DWORD je samo drugi naziv za Longword i primarno se koristi
zbog Windows API funkcija koje cesto imaju parametre tog
tipa.

I integer je tridesetdvobitni podatak ali oznacen:

Integer : -2147483648..2147483647 "signed 32-bit"

i zbog toga moze da pamti i negativne vrednosti do
pomenutog opsega.
[ goblin @ 04.10.2003. 15:36 ] @
Samo da dodam da bi mozda bilo bolje koristiti TRegIniFile umesto TRegistry jer dobijas kod koji je maltene identican (ali u svakom slucaju kompatibilan) onom koji koristis kad hoces da pises ini fajlove (cisto za slucaj da se predomislis).
Znam da je ovo samo primesa, ali eto, ipak da dodam...
Pozdrav