Announcement

Collapse
No announcement yet.

componenten erstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • componenten erstellen

    high.. ich hab da zwei fragen bezüglich componenten erstellen:

    1. warum funktioniert hier die defaultwerteinstellung nich? der code ist so:
    <pre>
    class PACKAGE TOwnComponent : public TComponent
    {
    private:
    int FVariable;
    protected:
    public:
    __fastcall TOwnComponent(TComponent* Owner);
    __published:
    __property int Variable = {read=FVariable, write=FVariable, default=14};
    };
    </pre> <br>
    der defaultwert wird im objectinspector immer auf 0 gesetzt (beziehungsweise auf den ersten enum wert), sollte aber in dem beispiel eigendlich doch auf 14 stehen...

    2. wie kann ich eventhandler machen (also solche wie zb bei nem button der OnClick handler, oder so)? wichtig ist hier auch, das man den handler nich unbedingt benutzen muss, also das man ihn auch leer lassen kann.

    dankeschön... sagt sandman

  • #2
    Hi, <br>
    hier ein Lösungsansatz zu 2)

    <pre>
    //-------MyComp.h---------
    class MyComponent : public XY
    {
    private:
    void __fastcall Event(); //Funktion die das Ereignis auslöst

    typedef void __fastcall(__closure *TMyEvent)(System::TObject *Sender); // Ereignis-Funktionstyp definieren
    TMyEvent FOnMyEvent; // Typ zuweisen

    protected:

    public:

    __published:
    __property TMyEvent OnMyEvent = {read = FOnMyEvent, write = FOnMYEvent};// Ereignid zuweisen
    };

    //----MyComp.cpp----------

    void __fastcall TMyComponent::Event() //Funktion die das Ereignis auslöst
    {

    if(OnMyEvent){ //ist das Ereignis belegt?
    //....//
    //tu irgendwas
    //...//
    OnMyEvent(Sender);// verbundene Fkt aufrufen
    }

    }
    //---------------------------------------------------------------------------
    </pre&gt

    Comment


    • #3
      Zu 1)

      Im Konstruktor folgendes hinzufügen

      FVariable=14 ;

      So muß das laufen

      Comment


      • #4
        danke.. das mit dem event handler hat gefunkt! das mit der initialisierten variable hab ich noch nich ausprobiert, aber ich bin sicher, es geht.. ich hab nur eine frage: warum muss man das extra noch in den konstuktor schreiben? das ist doch doppelt. ausserdem hab ich ein bcb-buch und da steht das auch nich so drin.. die ham das auch einfach nit default =xx gemacht...

        noch ma danke an euch

        sandma

        Comment


        • #5
          Hallo Sandman,

          Der 'default' Wert ist lediglich der Wert der im Objektinspektor angezeigt wird.
          Um die Variable auch mit diesem Wert zu initialisieren ist die Anweisung im Konstruktor nötig.
          Der 'default' wert müßte aber eigentlich im Objektinspektor angezeigt werden, auch wenn die Anweisung im Konstruktor fehlt

          Comment

          Working...
          X