home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 October
/
Chip_2001-10_cd1.bin
/
zkuste
/
delphi
/
kolekce
/
d56
/
TDSOFT.ZIP
/
TDSuperButton.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
2001-04-06
|
2KB
|
100 lines
unit TDSuperButton;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Dialogs,
StdCtrls;
type
TTDSuperButton = class(TButton)
private
FMultiline: Boolean;
FHoverStyles: TFontStyles;
{ Private declarations }
procedure SetMultiline(const Value: Boolean);
procedure SetHoverStyles(const Value: TFontStyles);
protected
{ Protected declarations }
procedure CMMOUSEENTER(var Mes: TMessage); message CM_MOUSEENTER;
procedure CMMOUSELEAVE(var Mes: TMessage); message CM_MOUSELEAVE;
procedure WMPAINT(var Mes: TMessage);message WM_PAINT;
procedure WMERASEBKGND(var Mes: TMessage);message WM_ERASEBKGND;
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public declarations }
published
{ Published declarations }
property MultiLine: Boolean read FMultiline write SetMultiline;
property HoverStyles: TFontStyles read FHoverStyles write SetHoverStyles;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('TDSoft', [TTDSuperButton]);
end;
{ TTDSuperButton }
procedure TTDSuperButton.CMMOUSEENTER(var Mes: TMessage);
begin
Font.Style:=FHoverStyles;
end;
procedure TTDSuperButton.CMMOUSELEAVE(var Mes: TMessage);
begin
Font.Style:=Font.Style - [fsBold];
end;
procedure TTDSuperButton.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style:=Params.Style and (not WS_TABSTOP);
if FMultiLine then Params.Style:=Params.Style or BS_MULTILINE;
end;
procedure TTDSuperButton.SetHoverStyles(const Value: TFontStyles);
begin
FHoverStyles := Value;
end;
procedure TTDSuperButton.SetMultiline(const Value: Boolean);
begin
FMultiline := Value;
RecreateWnd;
end;
procedure TTDSuperButton.WMERASEBKGND(var Mes: TMessage);
begin
end;
procedure TTDSuperButton.WMPAINT(var Mes: TMessage);
var
rgn: HRGN;
BTNDC: HDC;
MyCanvas: TCanvas;
begin
rgn:=CreateEllipticRgn(10,10,Width-10,Height-10);
SetWindowRgn(Handle,rgn,TRUE);
BTNDC:=GetWindowDC(Handle);
MyCanvas:=TCanvas.Create;
try
MyCanvas.Handle:=BTNDC;
with MyCanvas do
begin
Brush.Color:=clnone;
Pen.Color:=clGreen;
Ellipse(10,10,Width-10,Height-10);
end;
finally
FreeAndNil(MyCanvas);
end;
end;
end.