📄 urllabel.pas
字号:
unit URLLabel;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, StdCtrls, ShellAPI;
type
TURLLabel = class(TCustomLabel)
private
FLinkColor: TColor;
FDecoration: Boolean;
FURL: string;
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
procedure SetLinkColor(Value: TColor);
procedure SetDecoration(Value: Boolean);
procedure SetURL(const Value: string);
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
protected
procedure Click; override;
public
constructor Create(AOwner: TComponent); override;
published
property LinkColor: TColor read FLinkColor write SetLinkColor;
property Decoration: Boolean read FDecoration write SetDecoration;
property URL: string read FURL write SetURL;
property Align;
property Alignment;
property Anchors;
property AutoSize;
property BiDiMode;
property Caption;
property Color;
property Constraints;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property FocusControl;
property Font;
property ParentBiDiMode;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowAccelChar;
property ShowHint;
property Transparent;
property Layout;
property Visible;
property WordWrap;
property OnClick;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
property OnStartDock;
property OnStartDrag;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Custom', [TURLLabel]);
end;
procedure TURLLabel.CMMouseEnter(var Message: TMessage);
begin
inherited;
if FDecoration then
Font.Style := Font.Style + [fsUnderline];
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
end;
procedure TURLLabel.CMMouseLeave(var Message: TMessage);
begin
inherited;
if FDecoration then
Font.Style := Font.Style - [fsUnderline];
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
end;
constructor TURLLabel.Create(AOwner: TComponent);
begin
inherited;
Font.Color := clBlue;
FLinkColor := clBlue;
FDecoration := True;
FURL := 'http://cyberian.myetang.com;mailto:cyberian@citiz.net';
Cursor := crHandPoint;
Transparent := True;
Caption := FURL;
end;
procedure TURLLabel.SetLinkColor(Value: TColor);
begin
if Value <> FLinkColor then
FLinkColor := Value;
end;
procedure TURLLabel.SetDecoration(Value: Boolean);
begin
if Value <> FDecoration then
FDecoration := Value;
end;
procedure TURLLabel.SetURL(const Value: string);
begin
if Value <> FURL then
FURL := Value;
end;
procedure TURLLabel.Click;
begin
ShellExecute(GetDesktopWindow, 'open', PChar(FURL), nil, nil, SW_SHOWNORMAL);
inherited;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -