Für solche Dinge empfiehlt sich eine Property samt Setter.
Delphi-Quellcode:
type
TLed = class(TVorfahr)
private
FDings: TDatentyp;
procedure SetDings(const Value: TDatentyp);
...
published
property Dings: TDatentyp read FDings write SetDings;
...
end;
procedure TLed.SetDings(const Value: TDatentyp);
begin
if Value <> FDings then
begin
FDings := Value;
invalidate;
end;
end;
Sobald der Property Dings ein Wert zugewiesen wird, wird der Setter durchlaufen. Dieser schaut nach, ob auch tatsächlich eine Änderung eingetreten ist, setzt dann ggf. den neuen Wert und löst ein Neuzeichnen aus. Das muss man nicht unbedingt so machen, aber als Beispiel sollte das allemal taugen.