Moin Torud,
nichts leichter als das. Verpasse dem Property eine Setter-Methode und lasse beim Setzen das Control neu zeichnen.
Delphi-Quellcode:
type
TmyPanel = class(TCustomControl)
private
FBgColorFrom : TColor;
FBgColorTo : TColor;
procedure SetBgColorFrom(Value : TColor);
procedure SetBgColorTo(Value : TColor);
published
property BgColorFrom : TColor read FBgColorFrom write SetBgColorFrom;
property BgColorTo : TColor read FBgColorTo write SetBgColorTo;
end;
procedure TmyPanel.SetBgColorFrom(Value : TColor); // Settermethode
begin
If Value = FBgColorFrom then Exit; // wenn gleiche Farbe nichts tun
FBgColorFrom := Value; // Farbe abspeichern
Invalidate; // Control neu zeichnen
end;
procedure TmyPanel.SetBgColorTo(Value : TColor);
begin
If Value = FBgColorTo then Exit;
FBgColorFrom := Value;
Invalidate;
end;
Praktisch heisst das jetzt, immer wenn du dein Property BgColorFrom veränderst, wird nicht direkt in FBgColorFrom geschrieben, sondern die Settermethode SetBgColorFrom aufgerufen und der neue Farbwert übergeben. Das läuft übrigens automatisch.
Sind die Farben unterschiedlich, so wird FBgColorFrom gesetzt und mit Invalidate das Control veranlasst sich neu zu zeichnen.
Gruß oki