Mir fällt auf das du im OnCreate einfach den Parent setzt und den Owner auf WinControl castest.
Das ist der völlig falsche Weg. Wenn der Owner zum Beispiel kein WinControl ist knallt es. Oder wenn der Owner noch keinen Parent hat wird in aller Regel das
Handle auch noch nicht existieren und somit wird auch der Button noch kein
Handle haben etc.
Was spricht dagegen das Canvas-
Handle erst im OnPaint zu besorgen?