Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++ Builder] Obsługa timera - OnTimer

Ostatnio zmodyfikowano 2014-11-28 01:03
Autor Wiadomość
flrone
Temat założony przez niniejszego użytkownika
[C++ Builder] Obsługa timera - OnTimer
» 2012-10-31 01:03:42
Witam, mam pewien problem.. Nie wiem jak za bardzo obsługiwać Timer w C++ Builder... wchodzę w funkcję owego timera i daję sobie warunek, że jeśli Timer1->Interval<=500 to ma się pojawiać Label1 z Captionem "trolololo" a tu się nie pokazuje nic :P Pomocy :)
P-68033
akwes
» 2012-10-31 01:27:44
TTimer z biblioteki VLC działa troszeczkę inaczej niż sądzisz.

Zdaje się, że ma on tylko dwa parametry oraz jedną funkcję (z tego co pamiętam, akurat nie mam na dysku Borlanda)

Interval  - określa co jaki czas ma się wykonywać dana akcja.
Enabled - określa czy timer jest włączony czy nie
oraz funkcja (event) OnTimer.

OnTimer jest funkcją, która będzie wykonywana co określony wyżej Interval.

Czyli w Twoim przypadku pewnie będzie to coś takiego:

Zakładamy, że Label1 należy tutaj do TForm1
Gdzieś w konstruktorze klasy TForm1
C/C++
Timer1->Interval = 1000;
Timer1->Enabled = true;
Label1->Caption = "trololo";


Właściwy kod timera
C/C++
void __fastcall TForm1::Timer1Timer( TObject * Sender )
{
    Label1->Visible = !Label1->Visible;
}

Label powinien co sekundę znikać i się pojawiać.
P-68035
flrone
Temat założony przez niniejszego użytkownika
:)
» 2012-10-31 01:34:30
Dzięki za odpowiedź! :)
Głównie chodzi mi o to, aby na podstawie timera zrobić animacje, ale to już powinienem sam ogarnąć, gdy zrozumiem zasadę timer'ów w borlandzie. Dlatego dałem sobie ten warunek ze jeśli jest wartość tego timer'a wynosi poniżej 500 to ten caption ma byc"trolololo"(taki głupi przykład ;P)  a w każdym innym przypadku (Interval >500) ma być inny napis w tym labelu... Help :)
P-68036
akwes
» 2012-10-31 01:45:02
Ogólnie nie powinieneś korzystać z wartości Interval tylko korzystać z tego, że jest wykonywane zdarzenie OnTimer.

Jeżeli gdzieś stworzysz sobie funkcję "UstawKolejnaKlatkeAnimacji()", to w OnTimer powinno być wywołanie tej funkcji, a nie gdzieś indziej w kodzie badać wartość Interval.

Pamiętaj, Interval jest wielkością stałą i nie zmienia się ani razu przez cały czas trwania programu. Upływ czasu jest mierzony gdzieś w czarnej skrzynce zwanej TTimer. Tak więc jeżeli raz ustawisz Interval na 500 to do póki sam tego nie zmienisz, to ten Interval będzie wynosił 500.

Ten timer nie pokazuje aktualnego czasu, a wykonuje funkcję OnTimer co Interval.
P-68037
flrone
Temat założony przez niniejszego użytkownika
» 2012-10-31 01:46:00
dzięki wielkie za wytłumaczenie :)
pozdrawiam


edit:
a tak główkuje chwilę i nic... no bo OnTimer wykonuje się tylko raz na początku programu, a jak zrobić aby wykonywał się cały czas w kółko ?
P-68038
przemekcc
» 2014-11-28 01:03:57
Zrob inaczej;

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   int zmienna;
   zmienna++;
   if(zmienna>=ilestam)
     zmienna = 0;
}
P-121600
« 1 »
  Strona 1 z 1