THighLightControl =
class
(TControl)
private
FMouseOver:
Boolean
;
FCanvas: TCanvas;
protected
procedure
CMMouseLeave(
var
msg : TMessage); message CM_MOUSELEAVE;
procedure
CMMouseEnter(
var
msg : TMessage); message CM_MOUSEENTER;
procedure
WMPaint(
var
msg: TMessage); message WM_PAINT;
public
constructor
Create(Owner: TComponent); override;
destructor
Destroy; override;
end
;
procedure
Register;
implementation
constructor
THighLightControl
.
Create(Owner: TComponent);
begin
inherited
Create(Owner);
Width :=
100
;
Height :=
100
;
FMouseOver :=
False
;
FCanvas := TControlCanvas
.
Create;
TControlCanvas(FCanvas).Control := Self;
end
;
destructor
THighLightControl
.
Destroy;
begin
FCanvas
.
Destroy;
inherited
Destroy;
end
;
procedure
THighLightControl
.
CMMouseLeave(
var
msg : TMessage);
begin
FMouseOver :=
False
;
Invalidate;
end
;
procedure
THighLightControl
.
CMMouseEnter(
var
msg : TMessage);
begin
FMouseOver :=
True
;
Invalidate;
end
;
procedure
THighLightControl
.
WMPaint(
var
msg: TMessage);
begin
if
FMouseOver
then
begin
FCanvas
.
Brush
.
Color := clYellow;
end
else
begin
FCanvas
.
Brush
.
Color := clWhite;
end
;
FCanvas
.
Rectangle(
0
,
0
, Width, Height);
end
;
procedure
Register;
begin
RegisterComponents(
'SAMPLES'
, [THighLightControl]);
end
;
end
.
Комментарии