TTimer w mojej klasie

0

W jaki sposób we własnej klasie wywołać zdarzenie OnTimer klasy TTimer.

Napisałem klasę TMrowka, która porusza się w pozimie w lewo i w prawo. Aby mrówka się "poruszała" użyłem zdarzenia OnTimer komponentu TTimer. Komponent TTimer umieszczony jest na formie.

Czy możliwe jest, aby każdy obiekt Mrówka miał własny "zegar" i wg. własnego zegara się poruszał? Jak wywołać zdarzenie OnTimer w klasie TMrówka?

  TMrowka = class
  private
    FX: Integer;
    FWLewo: Boolean;
    Shape: TShape;
    procedure SetX(const Value: Integer);
    procedure SetWLewo(const Value: Boolean);
  public

    property X: Integer read FX write SetX;
    property WLewo: Boolean read FWLewo write SetWLewo;
    procedure ZmienKierunek;
    procedure Krok(AOdleglosc: Integer);
    procedure Update;
    constructor Create(AX: Integer; AOwner: TObject; AWLewo: Boolean=True);
  end;

A może jest jeszcze inny sposób, aby mrówka sama myślała?

0

Wstawić w pole klasy:

MojTimer: TTimer;

I przypisać w konstruktorze klasy:

MojTimer.OnTimer := JakasMetoda;

Deklaracja "JakasMetoda" musi być taka sama jak OnTimer.

0

Co to znaczy że 'Deklaracja "JakasMetoda" musi być taka sama jak OnTimer'.
Sprecyzuj Deti.

0

TTimer.OnTimer ma taką budowę:

property OnTimer: TNotifyEvent;

TNotifyEvent to procedure (Sender: TObject) of Object;

A zatem:

private
  ...
  procedure TimerHandle(Sender: TObject); // tu jest deklaracja tej metody
  ...
end;

I w konstruktorze:

Timer1.OnTimer := TimeHandle;

0

Dzięki Deti!
Działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1