Ein Eigenes Event bzw. Ereigniss erzeugen !?



  • hallo, wie kann man in einer eigenen klasse ein Ereignis deklarieren?
    und wie kann man diesen dann aufrufen?

    In VB ist das relativ einfach, nur in c++ weiß ich es leider nicht.

    dachte, dass ich dann im "Hauptquellcode" des gesamten Programmes in etwa sowas schreiben kann:

    void __fastcall cl_ampel1::rot(TObject *Sender)
    {
      Label1->Caption = "rot1";
    }
    
    void __fastcall cl_ampel2::rot(TObject *Sender)
    {
      Label2->Caption = "rot2";
    }
    

    nur ich weiß nicht wie ich das deklarieren soll. in meinem Klassenheader hatte ich folgendes Probiert:

    void rot();
    

    was dann aber natürlich eine Funktion in der klassen cpp ausführt und kein ereigniss wo drauf ich im Hauptprogramm zu greifen kann.

    Komme da mit dem Ereignis nun nicht zurecht.

    Wäre nett, wenn mir auch hier einer Helfen könnte.

    DAnke,

    Gruß
    Thorsten



  • Was hat die Caption mit einem Ereigniss zu tun

    Willst du ein eigenes Ereignis definieren?

    Willst du eine eigene Routine für ein bereits bestehendes Ereignis schreiben?

    Denke du solltest erstmal mit den bestehenden Ereignissen klar kommen (objektinspektor -> Ereignisse -> dort beim gewünschten Doppelklick)



  • nein, das Label hat nur infern damit zutun, damit ich auch sehe, dass das Ereigniss ausgelöst wurde.

    cl_ampel1 ist das Objekt meiner Klasse, welches ich vorher instanziert habe.

    nun möchte ich in meiner Klasse eine Zeile schreiben, die das Ereigniss "rot" auslösen soll.

    Ich weiß nur leider nicht, wie ich dieses Deklariere und wie ich es dann auslöse.
    Im Hauptprogramm müsste ich dann sowas stehen haben, wie in meinem ersten Beitrag, damit ich für jedes Objekt eine andere Routine zuweisen kann, was passieren soll, wenn das Ereigniss "rot" ausgelöst wurde.

    gruß
    thorsten



  • Deine Fragenstellung ist schrecklich.

    Hab mal ein Beispiel zusammengewurschtelt:
    Header:

    class Klasse
    {
     public: void __fastcall Funktion();
             void (__closure *ExterneFunktion)();// <----
    };
    class TForm1 : public TForm
    {
    __published:	// Von der IDE verwaltete Komponenten
            TButton *Button1;
            void __fastcall Button1Click(TObject *Sender);
    private:	// Anwender-Deklarationen
    public:		// Anwender-Deklarationen
            __fastcall TForm1(TComponent* Owner);
            void Blubb();
    };
    

    Unit:

    void __fastcall Klasse::Funktion()
    {
     ExterneFunktion();
    }
    
    void TForm1::Blubb()
    {
     ShowMessage("Ereignis aufgerufen");
    }
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     Klasse K;
     K.ExterneFunktion = Blubb;
     K.Funktion();
    }
    

    Hoffe, es wird klar



  • sauber, so funktioniert es einwandfrei. sollte man mal in die faq einbinden 😉

    gruß thorsten und vielen dank!



  • ThorstenSteinberg schrieb:

    sauber, so funktioniert es einwandfrei. sollte man mal in die faq einbinden 😉

    ist es doch schon lange.. ->Komponenten entwickeln

    mfg
    BigNeal



  • Das ist doch ein ganz normaler Mett-Hoden-Aufruf?!



  • Man muss bloß die richtigen Fragen stellen bzw. richtig formulieren 😃 😃


Anmelden zum Antworten