Krok 1:
__property TIdleEvent OnIdle;Krok 2: Określ jakiego typu zmienną będzie zwracała funkcja (prawie zawsze jest to typ void) i jakie zmienne mają być przekazane do funkcji. Niestety tego nie znajdziesz w helpie. Dla zdarzeń, które mogą być tworzone w fazie projektowania (takich jak np. OnClick), możesz stworzyć fikcyjny handler, a potem wyciąć i wkleić deklaracje funkcji. Dla handlerów, które nie mogą być stworzone w fazie projektowania musisz zaglądać do plików dołączanych do programu. Typy handlerów TApplication znajdują się w pliku FORMS.HPP. Możesz tam zajrzeć, znajdź definicję typu TIdleEvent, powinno wyglądać to tak:
typedef void __fastcall (__closure *TIdleEvent)(System::TObject* Sender, bool &Done);To znaczy, że funkcja OnIdle powinna wyglądać następująco:
void __fastcall TForm1::AppIdle(System::TObject *Sender, bool &Done)Krok 3: Dodaj deklarację funkcji do klasy obsługującej zdarzenie. Dla OnIdle będzie to wyglądać tak:
class TForm1 : public TForm { __published: // IDE-managed Components private: // User declarations void __fastcall AppIdle(System::TObject *Sender, bool &Done);Krok 4: Wpisz kod funkcji.
void __fastcall TForm1::AppIdle(System::TObject *Sender, bool &Done) { // Tutaj wpisz ciało funkcji }Krok 5: I wreszcie to, na co czekałeś. Aby skojarzyć swój handler ze zdarzeniem, musisz przypisać nazwę funkcji do handlera. Najdogodniejszym miejscem aby to uczynić jest wnętrze konstruktora klasy, która zawiera funkcję obsługującą zdarzenie.
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Application->OnIdle = AppIdle; }Zauważ, że nie ma to nic wymyślnego. Po prostu przypisujesz nazwę funkcji do handlera. Nie przypisuj adresu funkcji do handlera. |