Regeln beim Zuweisen von Parents bei VCL objekten ?



  • Ich habe eine Klasse geschireben die von TLabel abgeleitet wird(CLASS XXY).
    Dieses Klasse erstellt einen Button, mit dem man diese Label löschen soll.
    Jetzt will ich als Parent des Buttons dei Klasse XXY nehmen, damit beim löschen des Labels der Button automatisch gelöscht ist( Parents sind für das Destroyen der Childs verwantwortlich ).

    nun zum Problem :

    Es klappt nicht, das er mir bei zuweisen (this) einen Fehler bringt, das dies kein TWinControl sei. Auch mit static_cast ist keine Casting möglich.
    Komischerweise funtioniert das bei nicht abgeleitetn TLabel Klassen.
    Gibt es eine Methode der Klassen ( wahrscheinlic eine von TCompoent oder TWinControl) die mir einen Parent auf sich selbst zurückliefert ?

    Wie bekomm ich dieses Problem in den Begriff ?

    danke



  • notguru,

    notguru schrieb:

    Dieses Klasse erstellt einen Button, mit dem man diese Label löschen soll.
    Jetzt will ich als Parent des Buttons dei Klasse XXY nehmen, damit beim löschen des Labels der Button automatisch gelöscht ist( Parents sind für das Destroyen der Childs verwantwortlich ).

    ääh nein, das ist der Owner, den Du stets an den Konstruktor des Buttons übergibst. Parent ist quasi für die Darstellung des Buttons verantwortlich. Das währe als z.B. Dein Formular.
    Aber Dein eigentliches Problem wird sein, daß der Button das Label nicht löschen kann, da er selbst diesem Label gehört. Wird das Label gelöscht, löscht es alle Objekte, für die es verantwortlich ist - also auch den Button. Da dieser aber gerade seinen OnClick-Handler abarbeitet, bekommst Du anschließend eine AV.
    Also: Button-Handler löscht Label ==> Label löscht Button ==> Problem, weil Button-Handler noch aktiv


Anmelden zum Antworten