Eben deshalb wird nichts angezeigt. Wenn man Invalidate aufruft, so ist das natuerlich das Invalidate von TGraphicControl.
Da Paint nicht ueberschrieben ist, wird natuerlich das Paint von TGraphicControl und nicht das neu deklarierte Paint aufgerufen.
Eine virtuelle Methode wird als Zeiger in der
VMT (Virtual Method Table) abgelegt. Dort steht fuer diese Komponente erst mal das Paint von TGraphicControl.
Aufrufe von Paint gehen per Index in die
VMT des Objekts.
Ueberschreibt man Paint in der abgeleiteten Konponente (override), so wird der Eintrag in der
VMT durch das neue Paint ersetzt.
Damit ist eigentlich die ganze Vererbung erklaert.
dynamic macht keinen Eintrag in die
VMT, stattdessen wird eine Suche nach dem Namen eingesetzt. Das Ergebnis ist das gleiche. Man tauscht nur Suchzeit gegen Speicherplatzersparnis.