计算机二级Delphi控件:简单的系统托盘组件
来源:优易学  2011-6-5 16:50:51   【优易学:中国教育考试门户网】   资料下载   IT书店

  {最简单的系统托盘组件 for D7}
  {属性: }
  {Visible - 是否显示托盘图标}
  {方法: }
  {Change - 修改托盘图标,组件使用了Application的Icon及Title,所以}
  { 当这两者之一或全部改变时,就需调用Change以更新托盘图标}
  {事件: }
  {OnClick - 左键点击托盘图标事件 }
  {OnRightClick - 右键点击托盘图标事件}
  { }
  interface
  uses
  Windows, Messages, Classes, ShellAPI;
  type
  TTrayIcon = class(TComponent)
  private
  FHandle: HWND;
  FVisible: Boolean;
  FOnClick, FOnRightClick: TNotifyEvent;
  procedure SetVisible(const Value: Boolean);
  procedure WndProc(var Message: TMessage);
  protected
  IconData: TNotifyIconData;
  procedure SetTrayIcon;
  procedure AddTrayIcon;
  procedure DelTrayIcon;
  procedure Loaded; override;
  public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  procedure Change;
  published
  property OnClick: TNotifyEvent read FOnClick write FOnClick;
  property OnRightClick: TNotifyEvent read FOnRightClick write FOnRightClick;
  property Visible: Boolean read FVisible write SetVisible default True;
  end;
  procedure Register;
  implementation
  uses
  SysUtils, Forms;
  procedure Register;
  begin
  RegisterComponents(\’My Controls\’, [TTrayIcon])
  end;
  { TTrayIcon }
  const
  WM_TRAYICONEVENT = WM_USER + 1024;
  procedure TTrayIcon.AddTrayIcon;
  begin
  SetTrayIcon;
  Shell_NotifyIcon(NIM_ADD, @IconData);
  end;
  procedure TTrayIcon.Change;
  begin
  SetTrayIcon;
  if FVisible then
  Shell_NotifyIcon(NIM_MODIFY, @IconData);;
  end;
  constructor TTrayIcon.Create(AOwner: TComponent);
  begin
  inherited Create(AOwner);
  FHandle := Classes.AllocateHWnd(WndProc);
  FillChar(IconData, SizeOf(TNotifyIconData), 0);
  IconData.cbSize := SizeOf(TNotifyIconData);
  IconData.Wnd := FHandle;
  IconData.uId := UINT(Self);
  IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
  IconData.uCallbackMessage := WM_TRAYICONEVENT;
  FVisible := True;
  end;

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训