NWURLLabel.pas
上传用户:hbtcygglw
上传日期:2007-01-07
资源大小:281k
文件大小:2k
源码类别:

其他

开发平台:

Delphi

  1. unit NWURLLabel;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls, ShellAPI;
  6. type
  7.   TNWURLLabel = class(TLabel)
  8.   private
  9.     { Private declarations }
  10.     FCursor: TCursor;
  11.     FFontColor: TColor;
  12.     FHangColor: TColor;
  13.     FURL: String;
  14.     procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
  15.     procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  16.     procedure SetHangColor(const Value: TColor);
  17.     procedure SetURL(const Value: String);
  18.   protected
  19.     { Protected declarations }
  20.     procedure Click; override;
  21.   public
  22.     { Public declarations }
  23.     constructor Create(AOwner:TComponent);override;
  24.   published
  25.     { Published declarations }
  26.     property HangColor: TColor read FHangColor write SetHangColor default clBlue;
  27.     property URL: String read FURL write SetURL;
  28.   end;
  29. procedure Register;
  30. implementation
  31. {$R *.DCR}
  32. procedure Register;
  33. begin
  34.   RegisterComponents('NoctWolf', [TNWURLLabel]);
  35. end;
  36. procedure TNWURLLabel.Click;
  37. begin
  38.   ShellExecute(Parent.Handle, nil, PChar(FURL), nil, nil, SW_ShowNormal);
  39. end;
  40. procedure TNWURLLabel.CMMouseEnter(var Message: TMessage);
  41. begin
  42.   if Enabled then
  43.   begin
  44.     FCursor := Cursor;
  45.     FFontColor := Font.Color;
  46.     Cursor := crHandPoint;
  47.     Font.Color := FHangColor;
  48.     Font.Style := Font.Style + [fsUnderline];
  49.   end;
  50. end;
  51. procedure TNWURLLabel.CMMouseLeave(var Message: TMessage);
  52. begin
  53.   Cursor := FCursor;
  54.   Font.Color := FFontColor;
  55.   Font.Style := Font.Style - [fsUnderline];
  56. end;
  57. constructor TNWURLLabel.Create(AOwner: TComponent);
  58. begin
  59.   inherited Create(AOwner);
  60.   Caption := '我的信箱';
  61.   FHangColor := clBlue;
  62.   FURL := 'mailto:noctwolf@990.net';
  63. end;
  64. procedure TNWURLLabel.SetHangColor(const Value: TColor);
  65. begin
  66.   if FHangColor <> Value then FHangColor := Value;
  67. end;
  68. procedure TNWURLLabel.SetURL(const Value: String);
  69. begin
  70.   if FURL <> Value then FURL := Value;
  71. end;
  72. end.