Die Frage ist eher:
Wieso zeichnest du auf das Canvas der Form und nicht auf die Canvas der Images, obwohl du doch schöne TImages dafür hast, deren Grafiken du ja eigentlich verändern willst?
Das müßte man im OnRepaint alles jedesmal neu zeichnen, damit es sichtbar bleibt. (beim Zeichnen auf das Form-Canvas)
OnShow wird (ich glaub das war so) kurz vor der Anzeige der Form aufgerufen und nicht wenn diese schon sichtbar ist.
PS: Die paar globalen Variablen, mit ihren vielsagenden Namen, sind auch sehr gut geeignet, um Fehler zu vermeiden.