Als Event eigene Funktion aufrufen lassen
-
Hallo allerseits,
ich habe auf einer Form ein TEdit-Control und moechte gerne beim OnEnter-Event
eine Methode der Form aufrufen, auf welchem sich das Control befindet.Nun, wie kann ich das machen? Einfach im __published-Bereich eine entsprechende
Methode deklarieren und in der Implementationsdatei diese dann definieren ist
nicht moeglich.Any ideas?
Danke im Voraus.
mfg
v R
-
virtuell Realisticer schrieb:
Einfach im __published-Bereich eine entsprechende
Methode deklarieren und in der Implementationsdatei diese dann definieren ist
nicht moeglich.Und wenn Du die Methode im private-Bereich oder public deklarierst, sie dann in der cpp.Datei implementierst und sie schließlich im OnEnter-Ereignis aufrufst?! Was passiert dann?!
MfG
xy
-
Hallo,
dann muesste ich sie ja im Control definieren. Genau das will ich nicht tun bzw.
diese Moeglichkeit habe ich aufgrund des Programmaufbaus (Unser Produkt, welches
wir herstellen. Da kann ich an der Struktur nichts grossartig aendern) nicht.Daher wollte ich eine Methode schreiben:
void __fastcall MyMethod(TObject *Sender);
welche ich im OnEnter-Event eines Controls zuweisen kann. Diese Zuweisung kann
ich allerdings nur vornehmen, wenn die Methode im __published-Bereich steht.Wenn ich sie per Hand eintrage und die Header abspeichere geht das noch. Sobald
ich aber die Funktion in der .cpp-Datei implementiert habe und abspeichere,
entfernt mir der CBuilder die Deklaration + Definition dieser Methode.Weiss nich, wie ich das machen soll.
mfg
v R
-
virtuell Realisticer schrieb:
Daher wollte ich eine Methode schreiben:
void __fastcall MyMethod(TObject *Sender);
welche ich im OnEnter-Event eines Controls zuweisen kann.
Das irritiert. Meinst Du vielleicht, im OnEnter-Event eines Controls aufrufen?! Oder einem OnEnter-Event eines Controls zuweisen?
etwa so:Edit1->OnEnter = MyMethod;
MfG
xy
-
Sei es drum. Jedenfalls habe ich es gerade getestet. Folgendes funktioniert bei mir wunderbar:
Im Header und zwar im pubilc-Bereich:
public: void __fastcall Test(TObject *Sender);
In der .cpp-Datei:
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Edit1->OnEnter = Test; } void __fastcall TForm1::Test(TObject *Sender) { ShowMessage("HALLO!"); }
Ist es das, was Du meinst?
MfG
xy
-
Hallo,
so hab ich das noch gar nicht ausprobiert. Wollte die Methode dem Event eines
Controls im Object Inspector zuweisen, was allerdings nur funktioniert, wenn
die Methode im __published-Bereich ist.So wie du hab ich es noch nicht ausprobiert, werd ich aber gleich mal machen.
In wie weit ich das verwenden kann, weiss ich noch nicht, da wir viele Controls
haben, aber ich bin sicher das laesst sich mit ner schoenen Schleife regeln.Danke fuer die Hilfe!
mfg
v R
-
virtuell Realisticer schrieb:
Wenn ich sie per Hand eintrage und die Header abspeichere geht das noch. Sobald
ich aber die Funktion in der .cpp-Datei implementiert habe und abspeichere,
entfernt mir der CBuilder die Deklaration + Definition dieser Methode.Hi,
das ist das Standardverhalten! Leere Ereignisfunktionen entfernt der Builder beim Speichern bzw. Copilieren automatisch!Also einfach in die Funktion etwas reinschreiben (und wenn es nur "//" ist) und er entfernt sie nicht mehr!
MfG
Alexander Sulfrian