Das ist natürlich von TButton abgeleitet. Na gut, so halt :
Code:
type
TFarbButton = class(TButton)
private
{ Private declarations }
FColor : TColor;
FCanvas : TCanvas;
procedure SetColor (c : TColor);
protected
{ Protected declarations }
procedure DrawButton (Rect : TRect);
public
{ Public declarations }
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
property Canvas : TCanvas read FCanvas;
property Color : TColor read FColor write SetColor;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Beispiel', [TFarbButton]);
end;
constructor TFarbButton.Create (AOwner : TComponent);
begin
inherited Create (AOwner);
FCanvas := TCanvas.Create;
end;
destructor TFarbButton.Destroy;
begin
FCanvas.free;
inherited;
end;
procedure TFarbButton.DrawButton (Rect : TRect);
begin
FCanvas.Brush.Color := FColor;
FCanvas.Pen.Color := clBlack;
FCanvas.FillRect (Rect);
end;
procedure TFarbButton.SetColor (c : TColor);
begin
Fcolor := c;
end;
Und den
OI hänge ich als Beiweis, daß es funktioniert noch an.

Anzumerken ist die Property Color, die steht in der Typdeklaration der Klasse drin und ist von mir. Die anderen Farben werden von Brush und Pen bereitgestellt. Und noch eine Frage : Bei Copymode steht eine komische Zahl. Was soll das ? Wie gesagt im
OI sieht das Recht gut aus. Es gibt noch einen Fehler : Es funktioniert nicht.