Eigene "Ereignisse" einbinden
-
Hallo.
Im Objektinspektor hat man ja diverse Ereignisse die man ausfüllen und auch auf Eregnisse von anderen Komponenten verlinken kann.
Ich würde jedoch gern eine eigene Funktion schreiben wollen, welche den selben Funktionskopf wie die Eregnisse besitzt und ohne viel Aufwand darauf verlinken wollen. Jedoch gibt der Objektinspektor bei eintsprechender Funktion diese nicht zur Auswahl. Mach ich etwas falsch oder geht soetwas nicht? Bzw. man kann dies nur fest im Quelltext über Komponente->OnKeyPress = MyEregniss; setzen?
-
Hallo
Natürlich kannst du auch zur Entwurfszeit manuell Eventmethoden über den OI zuweisen. Damit eine Methode in der Auswahlliste erscheint muß
- die Methode dem exakten Prototypen entsprechen (was offenbar der Fall ist wenn du sie im Quellcode auch zuweisen kannst)
- die Methode in der Headerdatei im Abschnitt deklariert werden wo auch die andern IDE-verwalteten Eventmethoden stehen__published: // Von der IDE verwaltete Komponenten TButton *Button1; void __fastcall Button1Click(TObject *Sender); // hier manuell deklarieren private: // Anwender-Deklarationenbis bald
akari
-
Ich mache das immer so, dass ich die Funktion vom Objektinspektor erstellen lasse und sie dann umbenenne. Da gibt es dann auch keine Fehler mit der Signatur.
-
Ach bei __published muss das rein, ja logisch. Ja jetzt geht es. Danke!!
Besteht eventuell die Möglichkeit das andere TForms oder TFrames auf diese Methode zugreifen können? Würde sie gern in allen Forms nutzen wollen, da sie überall so identisch gebraucht wird und ich es unpraktisch finde in jeder Form neu anzulegen, zumal bei Änderungen auch jede Kopie aktualisiert werden müsste.
-
Hallo
Du kannst den Event-Eigenschaften auch passende Methoden aus anderen Klassen zuweisen, aber das geht wirklich nur über über Quellcode nicht über den OI.
Aber bedenke das du bei solchen Eventumleitungen dann nicht in der auslösenden Formklasse arbeitest sondern in der empfangenden.bis bald
akari
-
Ich würde Eventfunktionen immer in der jeweiligen Klasse lassen. Du kannst aber eine Funktion mit der benötigten Funktionalität irgendwo erzeugen und die dann in den jeweiligen Eventfunktionen aufrufen.
-
lolilu schrieb:
Ach bei __published muss das rein, ja logisch. Ja jetzt geht es. Danke!!
Besteht eventuell die Möglichkeit das andere TForms oder TFrames auf diese Methode zugreifen können? Würde sie gern in allen Forms nutzen wollen, da sie überall so identisch gebraucht wird und ich es unpraktisch finde in jeder Form neu anzulegen, zumal bei Änderungen auch jede Kopie aktualisiert werden müsste.
Du könntest versuchen, eine abstrakte Klasse zu definieren, die von TForm erbt, Deine Events verarbeitet/vorbereitet und die dann von Deinen Forms, die diese Funktionalität benötigen weiter geerbt wird.