Ereignismethoden ändern
-
Hallo
Also zuerst mal ich arbeite mit dem Borland C++ Builder 6.
ich habe dynamisch 10 Timer (TTimer) erstellt und möchte jetzt jedem das OnTimer Ereignis geben, jedoch müsste ich dann doch wieder für jeden einzelnen Timer eine eigene Methode schreiben, da ich im Methodennamen doch keinen Array angeben kann zb so:void __fastcall TForm1::Timer[0]Timer(TObject *Sender)Da ich das nicht hinbekommen habe, habe ich eine eigene Methode erstellt, die alle Timer benutzen können, wenn ich jetzt aber schreibe timer[i]->OnTimer=move(i);
dann kommt aber die Fehlermeldung[C++ Fehler] Unit1.cpp(59): E2109 Kein zulässiger Typ
geht das irgendwie dass ich eine andere Methode als die Standartmethode angeben kann?
gruss
uthiess++
-
timer[i]->OnTimer=move;wobei die Funktion move vom richtigen Typ (siehe Hilfe) sein muß.
typedef void __fastcall (__closure *TNotifyEvent)(System::TObject* Sender);Einen timerabhängigen Parameter kannst du nicht direkt angeben. Du kannst aber den Parameter Sender auswerten.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Borland C++ Builder (VCL/CLX) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
thx das mit dem funktionsaufruf hat geklappt
wie kann ich denn von *Sender auslesen welcher timer es aufgerufen hat?
-
Such mal nach dynamic_cast im BCB-Forum.
-
Siehe FAQ unter "Komponenten benutzen".
-
Also ich kann grundsätzlich nur empfehlen nur einen Timer zu verwenden. Die Dinger stehen Windows nur begrenzt zur Verfügung.
Such die den kleinsten gemeinsamen Nenner der Intervalle. Diesen verwendest Du dann als Intervall. Für jede Aktion verwendest Du dann innerhalb von OnTimer() einen Zähler. Bei Erreichen des Faktors führst Du die gewünschte Aktion aus und setzt den Zähler wieder auf 0.
Joe_M.