Komponentenentwicklung - Eigenschaften löschen



  • Wer kann mir bei diesem Problem helfen:

    TPanel gefällt mir eigentlich ganz gut.
    Desswegen leite ich mir meine neue Komponente auch von TPanel ab.

    Dennoch würde ich gerne an den Eigenschaften rumspielen.

    Wie man diese hinzufügt habe ich schon irgendwo gelesen, denke also, dass ich das hinbekomme.

    Wonach ich aber bisher vergebens gesucht habe, ist eine Möglichkeit, vorhandene Eigenschaften zu löschen!

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



  • Hallo

    der beste Weg ist wohl, von TCustomPanel abzuleiten anstatt vopn TPanel.
    Da ist keine Caption-Eigenschaft.

    /Edit : bzw. Caption ist nicht verwendbar. Allerdings auch nicht BevelInner und BevelOuter.

    bis bald
    akari



  • 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