Zitat von
Phoenix:
...
Letzteres.
Du hast folgendes Problem:
Du hast ein TButton, der aber als TWinControl gecastet ist.
Der Compiler geht also innerhalb der Methode davon aus, das Du nur ein TWinControl hast. Wird in diesem Moment eine Methode aufgerufen wie z.B. Repaint setzt der Compiler die Sprungadresse zu TWinControl.Repaint ein. Da hilft das nichts, das Dein Objekt ein TButton ist und Repaint dortdrin eigentlich überschrieben wäre, da das der Compiler der die Sprungadresse dorthin compiliert nix davon weiss.
Du musst tatsächlich TButton(Object).Repaint aufrufen um die überschriebene Methode zu nehmen.
Denk da nochmal drüber nach! Entweder hast du dir ein schlechtes beispiel gesucht oder Polymorphy nicht verstanden (nicht böse sein). ABER selbstverständlich wird in diesem fall TButton.Repaint aufgerufen, denn sie wurde ja explizit von TButton überschrieben.
ODer wie darf ich dich verstehen?
mâxîmôv.
{KDT}