Warum leitest du nicht einfach eine Klasse von TBitmap ab? Überall wo eine TBitamp erstellt werden soll, erstellst du statt dessen eine TZauberbitmap und fertig.
Delphi-Quellcode:
type
TZauberbitmap = class(TBitmap)
procedure Draw(ACanvas : TCanvas; const Rect : TRect); override;
private
FInvisible: Boolean;
public
property Invisible: Boolean read FInvisible write FInvisible;
end;
procedure TZauberbitmap.Draw(ACanvas : TCanvas; const Rect : TRect);
begin
if Invisible then
Exit;
inherited;
end;
Alternativ könntest du die Eigenschaft "Invisible" auch in der Ebenen-Klasse implementieren.
TZauberbitmap bekommt ein Property der Klasse Ebene (oder ein Interface) und kann darüber vor dem Zeichnen die Eigenschaft prüfen.
Es genügt dann die Eigenschaft bei der Ebene zu setzen und die Anzeige zu aktualisieren.
Ich gewinne den Eindruck das in deinem Projekt ein grundsätzliches Problem in der Trennung von Daten, Funktion und Oberfläche liegt.
Auch wenn sich einzelne Probleme umgehen lassen, wird das Ganze immer nur noch komplizierter.
Deine Versuche das nur an der Oberfläche zu lösen sind vermutlich langfristig zum scheitern verurteilt.