Zitat von
BenjaminH:
TControl hat die private Procedure SetColor.
Mein Nachfahre davon soll auf eine Änderung der Farbe reagieren. Also habe ich SetColor überschrieben.
Das kann schiefgehen, da ein Schreibzugriff auf Color in diesem Fall wohl nicht deine Methode erreicht.
Zitat von
BenjaminH:
Gibt es eine Möglichkeit die Procedure von TControl aufzurufen, obwohl sie als private deklariert ist?
Keinen, den ich die empfehlen würde.
Zitat von
BenjaminH:
Oder ist mein Weg falsch? Wie geht das geschickter?
Ja, dein Weg ist falsch. Besser ist folgender: SetColor setzt am Ende eine Message
CM_COLORCHANGED ab, die du mit einer Message-Methode abfangen kannst,
obwohl die originale Methode private ist.
Delphi-Quellcode:
type
TMyControl = class(TControl)
private
procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED;
public
end;
procedure TMyControl.CMColorChanged(var Message: TMessage);
begin
inherited;
// tue was immer nötig ist
end;