Komponentenentwicklung - Eigenschaften löschen



  • insaint schrieb:

    z.B.: Was mache ich um "Caption" wegzubekommen?
    (... und damit meine ich nicht this->Caption = ""; 😉 )

    Wenn du es nur von außen nicht zugänglich machen willst, reicht AFAIK ein

    private:
        __property Caption;
    

    in deiner abgeleiteten Klasse.

    Moritz



  • Also ich habe

    private:
            __property Caption;
    

    in die .h der neuen Klasse kopiert, aber im Objektinspektor finde ich noch "Caption".

    Ich probiers mal mit TCustomPanel

    thx
    😃



  • audacia schrieb:

    insaint schrieb:

    z.B.: Was mache ich um "Caption" wegzubekommen?
    (... und damit meine ich nicht this->Caption = ""; 😉 )

    Wenn du es nur von außen nicht zugänglich machen willst, reicht AFAIK ein

    private:
        __property Caption;
    

    in deiner abgeleiteten Klasse.

    Moritz

    ????????????????????
    Nicht, wenn von TPanel abgeleitet!
    Was public ist kann nicht wieder versteckt werden!

    Besser, wie Akari sagt.



  • Allerdings vermisse ich bei TCustomPanel die Eigenschaft "Align".

    Die jetzt selberschreiben wollte ich eigentlich nicht...

    Was mach ich denn jetzt ? 😕 ?



  • in Public der abgeleiteten Klasse (von CustomPanel)

    __property Align;



  • Super! Im Quellcode kann ich Align jetzt ansprechen!!! Dankeschön 😃 !

    Jetzt müsste ich nur noch ne Möglichkeit finden,
    wie ich die Eigenschaft auch im Objektinspektor anzeigen kann!



  • Hallo

    du must den Eintrag

    __property Align;
    

    in den Abschnitt __published:
    schreiben.

    bis bald
    akari



  • Danke für die schnelle Antwort 😃
    Klappt wunderbar!!!



  • Noch 'ne Frage:

    Kann man das gleich auch mit Ereignissen machen ? 😕 ?



  • Hallo

    klar geht das auch mit Events.
    hier mal ein Beipiel für einfachen eigenen Event :

    typedef void __fastcall (__closure *TIntegerEvent)(System::TObject* Sender, int Value); // Definition eines Events zum Übergeben einer Zahl
    ...
    class TMyControl
    {
      ...
      private :
        TIntegerEvent iMyEvent; // interner Speicher auf zugewiesene Funktion
      ...
      __published :
      ...
        __property TIntegerEvent MyEvent = {read = iMyEvent, write = iMyEvent}; // Property für Event
      };
    ...
    // Konstruktor von TMyControl
    TMyControl::TMyControl() : ...
    {
      ...
      iMyEvent = NULL; // Speicer initialisieren
      }
    

    jetzt hast du im OI deines Controls den neuen Event, dem du passende Funktionen zuweisen kannst.

    bis bald
    akari



  • Gut, so schreibe ich Ereignisse selber,
    aber was ich meinte ist,
    ob ich bestehende (z.B. OnClick-) Events einfach einbinden kann,
    und wie dass geht?



  • Hallo

    wo soll denn der Event herkommen?
    Und wie genau willst du diesen in deinem Control nutzen?

    bis bald
    akari



  • Naja,
    sagenwir einfachmal ich möchte ein TMyCustomPanel,
    dass eine OnClick-Event besitzt, dass das gleiche macht,
    wie ein On-Click-Event bei einem TPanel:
    Er reagiert halt aufs draufclicken!

    Später wären auch OnMouseMove, OnMouseDown etc interessant...



  • __property OnClick;
    

    tut es!

    Schönen Dank auf jeden Fall! Mir fallen nachher bestimmt noch ein paar Fragen ein! 😃
    Ansonsten schönes WE


Anmelden zum Antworten