///////////////////////////////////////////////////////////////////////////////
// TMyColorButton
//
// Beispielprogramm zur Komponentenerstellung
//
// Folgende Dinge sind zu sehen:
// - eine einfache Message wird behandelt ( CM_MOUSEENTER und CM_MOUSELEAVE )
// - Propertys werden verwendet
// - bei TColor und TBrushStyle werden automatisch
// die Standard Property Editoren verwendet
// - ein protected Event wird published (OnClick)
//
// Dieser Quelltext liegt auch auf [url]www.delphipraxis.net[/url]
// ( [url]http://www.delphipraxis.net/topic80394_eigene+komponente+von+tcustomcontrol+eigenschaftseditor.html[/url] )
//
///////////////////////////////////////////////////////////////////////////////
// Das Programm ist Freeware und darf beliebig benutzt und erweitert werden.
// Es wäre nett, wenn dann auch der geänderte Quelltext in obige URL-Adresse
// gesendet wird. Dann haben alle was davon.
// Es wäre auch nett wenn mein (unser) Name in den Dateien enthalten bleibt.
// Das Programm wird von Ihnen auf eigenes Risiko eingesetzt. Ich übernehme
// keine Haftung für Schäden die durch das Programm oder die Benutzung des
// Programms entstanden sind bzw. entstehen.
///////////////////////////////////////////////////////////////////////////////
// (C) 2005, MaBuSE, member of DelphiPraxis.net
///////////////////////////////////////////////////////////////////////////////
// ReleaseNotes:
// v1.0 - 11.04.2006 - MaBuSE: Erste Version war in 10 min programmiert
///////////////////////////////////////////////////////////////////////////////
unit MyColorButton;
interface
uses
SysUtils, Classes, Controls, StdCtrls, Graphics, Messages;
type
TMyColorButton =
class(TcustomControl)
private
{ Private-Deklarationen }
FmyActiveBrushColor: TColor;
FmyBrushColor: TColor;
FmyBrushStyle: TBrushStyle;
FmyMouseOver: Boolean;
FmyPenColor: TColor;
procedure CMMouseEnter(
var Message: TMessage);
message CM_MOUSEENTER;
procedure CMMouseLeave(
var Message: TMessage);
message CM_MOUSELEAVE;
procedure SetmyActiveBrushColor(
const Value: TColor);
procedure SetmyBrushColor(
const Value: TColor);
procedure SetmyBrushStyle(
const Value: TBrushStyle);
procedure SetmyPenColor(
const Value: TColor);
protected
{ Protected-Deklarationen }
procedure Paint;
override;
public
{ Public-Deklarationen }
constructor Create(AOwner: TComponent);
override;
published
{ Published-Deklarationen }
property myActiveBrushColor: TColor
read FmyActiveBrushColor
write SetmyActiveBrushColor;
property myBrushColor: TColor
read FmyBrushColor
write SetmyBrushColor;
property myBrushStyle: TBrushStyle
read FmyBrushStyle
write SetmyBrushStyle;
property myPenColor: TColor
read FmyPenColor
write SetmyPenColor;
property OnClick;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('
Beispiele', [TMyColorButton]);
end;
{ TMyColorButton }
procedure TMyColorButton.CMMouseEnter(
var Message: TMessage);
begin
// wird automatisch aufgerufen wenn der Mauszeiger über dem Control ist.
inherited;
FmyMouseOver := true;
RePaint;
end;
procedure TMyColorButton.CMMouseLeave(
var Message: TMessage);
begin
// wird automatisch aufgerufen wenn der Mauszeiger nicht mehr über dem Control ist.
inherited;
FmyMouseOver := false;
RePaint;
end;
constructor TMyColorButton.Create(AOwner: TComponent);
begin
inherited;
FmyActiveBrushColor:= clRed;
FmyBrushColor := clGreen;
FmyBrushStyle := bsDiagCross;
FmyMouseOver := false;
FmyPenColor := clBlue;
end;
procedure TMyColorButton.Paint;
begin
inherited;
if (csDesigning
in ComponentState)
or (
not FmyMouseOver)
then
begin
Canvas.Brush.Color := FmyBrushColor;
end
else
begin
Canvas.Brush.Color := FmyActiveBrushColor;
end;
Canvas.Brush.Style := FmyBrushStyle;
Canvas.Pen.Color := FmyPenColor;
Canvas.Rectangle(0,0,width,height);
end;
// Die folgenden proceduren werden beim Ändern einer Property aufgerufen
// hier steht überall ein RePaint damit die geänderten Einstellungen
// auch sichtbar werden.
procedure TMyColorButton.SetmyActiveBrushColor(
const Value: TColor);
begin
FmyActiveBrushColor := Value;
RePaint;
end;
procedure TMyColorButton.SetmyBrushColor(
const Value: TColor);
begin
FmyBrushColor := Value;
RePaint;
end;
procedure TMyColorButton.SetmyBrushStyle(
const Value: TBrushStyle);
begin
FmyBrushStyle := Value;
RePaint;
end;
procedure TMyColorButton.SetmyPenColor(
const Value: TColor);
begin
FmyPenColor := Value;
RePaint;
end;
end.