Probleme mit Ereignis zuweisen



  • Hallo, kann mir jemand sagen was ich verkehrt mache?

    StringGrid1->OnMouseWheelDown = MyStringGrid1MouseRadDown;
    


  • Hallo

    du must schon mehr posten. Zum Beispiel die Funktion 'MyStringGrid1MouseRadDown'. Schau enfach mal, ob die vom richtigen typ ist :

    void __fastcall TForm1::StringGrid1MouseWheelDown(TObject *Sender,
          TShiftState Shift, TPoint &MousePos, bool &Handled)
    

    Außerdem, was genau geht den nun nicht? Compilerfehler? Runtimefehler?

    Tip: erstell dir die Funktion vom Objektinspektor, dann ist alles geregelt.

    bis bald
    akari



  • Ja klar hatte ich vergessen

    private: // Anwenderdeklarationen
    // ====StringGrid1==================================
    void __fastcall TFTP05::MyStringGrid1MouseRadDown(TObject *Sender,
    TShiftState Shift, TPoint &MousePos, bool &Handled);
    //====================================================

    Der Fehler lautet:

    [C++ Fehler] Unit1.cpp(157): E2034 Konvertierung von 'void (_fastcall * (_closure )(TObject *,TShiftState,TPoint &,bool &))(TObject *,TShiftState,TPoint &,bool &)' nach 'void (_fastcall * (_closure )(TObject *,TShiftState,const TPoint &,bool &))(TObject *,TShiftState,const TPoint &,bool &)' nicht möglich.

    In dieser Zeile:

    StringGrid1->OnMouseWheelUp = MyStringGrid1MouseRadDown;

    Im cpp steht sie denn so:

    void __fastcall TFTP05::MyStringGrid1MouseRadDown(TObject *Sender,
    TShiftState Shift, TPoint &MousePos, bool &Handled)
    {
    }

    Hatte dieses denn mal mit eine OnClick Funktion ausprobiert, und dieses ging denn ohne Probleme.
    Muss irgendwie mit den Typen im Kopf zu tun haben. Bei einem TObject gibt es keine Probleme,
    sobald es mehr werden tritt diese dieser Fehler denn auf.

    Bitte um Hilfe

    Danke cesa



  • Hallo

    vergleich mal die beiden Typen in der Fehlermeldung. Du wirst feststellen, das der Unterschied im Parameter 'const TPoint &' liegt. Richtig ist ohne const. Du mußt also in der Definition der Funktion das const rausnehmen.

    /Edit : Das ist ja eine miese Sache. Ich habe das mal ausprobiert.
    In der Hilfe steht der Event mit const. Mit dem Objektinspektor wird eine Funktion ohne const erstellt, was auch funktioniert. Wird aber versucht, diese Funktion manuell einem Event zuzuweisen, kommt die Fehlermeldung. Du mußt also bei manueller Zuweisung noch const zu deiner Funktion hinzufügen.

    bis bald
    akari



  • Danke habe mir es noch mal angeguckt.
    Und es denn auch gesehen, habe es denn gleich ausprobiert und es hat geklappt.
    Hab noch mal vielen dank hast mich echt weitergebracht.


Log in to reply