@Medium, vielen Dank! Ich benutze ein CreateTimerQueue- und Timer-Objekt von
https://github.com/grijjy/DelphiTimerQueue. Das funktioniert auch gut. Dass der Callback-Funktion die Adresse des Timer-Objektes übergeben wird und nicht die vom TShape hatte ich bisher nicht kapiert.
Ich hatte eine Variante, in der ich in das Timer-Objekt fShapeAddr eingefügt habe, in der Initialisierung habe ich die TShape-Adresse da rein geladen und auf die in der Callback-Funktion zugegriffen. Das ging. Jetzt wollte ich aber ein Objekt machen, in dem die Ausgabekomponente im Zentrum steht und nicht der Timer, und da ging der Schlamassel los. Aber jetzt funktioniert es. Vielen Dank nochmal an die Mitdenker!