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


Anmelden zum Antworten