Umieść na formularzu komponenty:
Shape1, Edit1 i Timer1.
W
Timer1 ustaw właściwość
Enabled na
true, a
Interval na
1000.
W
pliku nagłówkowym w sekcji
private zadeklaruj listÄ™ typu
TStringList, która będzie przechowywała sześć zdefiniowanych kolorów w formacie WEB, oraz zmienną typu
int, która będzie przechowywała liczbę podaną w
Edit1:
- Kod: Zaznacz cały
private:
     TStrings* ColorList;
     int count;
Â
Teraz w
pliku źródłowym w konstruktorze klasy trzeba zdefiniować listę. Następnie w zdarzeniu
OnShow formularza trzeba wypełnić listę kolorami. Ustawić tekst w
Edit1 na
0, by zatrzymać zegar, ma to związek ze zdarzeniem
OnChange obiektu
Edit1 w którym umieszczamy kod pobierający tekst do zmiennej
count. Zakres liczby wprowadzanej do
Edit1 został ograniczony do
0-10, tzn. użytkownik może wprowadzić liczby mniejsze od
0 i większe od
10, ale zostaną one i tak obcięte do pożądanej wartości. To zdarzenie steruje również zegarem, gdy wprowadzona wartość jest mniejsza niż
1 to zegar siÄ™ zatrzymuje w przeciwnym razie jest uruchamiany. W zdarzeniu
OnTimer obiektu
Timer1 umieszczamy kod sprawdzajÄ…cy czy zmienna
count jest większa od
0, jeżeli nie to dalszy kod się nie wykona. To sprawdzanie jest w zasadzie zbędne, gdyż w przypadku gdy zostanie podana wartość
0, zegar i tak siÄ™ zatrzyma. Stanowi jakby dodatkowe zabezpieczenie. W zdarzeniu
OnTimer odbywa siÄ™ losowanie liczby z zakresu
0-6 oraz zmiana koloru obiektu
Shape1:
- Kod: Zaznacz cały
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
 ColorList = new TStringList;   Â
}
void __fastcall TForm1::FormShow(TObject *Sender)
{
 ColorList->Add("#ffffff");
 ColorList->Add("#ff0000");
 ColorList->Add("#00ff00");
 ColorList->Add("#0000ff");
 ColorList->Add("#000000");
 ColorList->Add("#ffff00");
 Edit1->Text = "0";
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
 delete ColorList;   Â
}
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
 count = Edit1->Text.ToIntDef(0);
 if(count > 10) count = 10;
 if(count < 0)  count = 0;
 if(count != 0)
 {
  Timer1->Interval = 1000 / count;
  Timer1->Enabled = true;
 }
 else Timer1->Enabled = false;   Â
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 if(count == 0) return;
 Shape1->Brush->Color = WebColorStrToColor( ColorList->Strings[Random(6)] );
 Application->ProcessMessages();
}
Â
Przedstawiony kod wykorzystuje obiekty i funkcje dostępne w środowisku C++Builder 6 i nowszych.