TNotifyIcon 控件1.01 (Build use Delphi 3.0) 说明: 作用: 往通知区加图标,并可显示,隐藏,修改这个图标.
属性(properties): NotifyIcon:TIcon 欲加在通知区的图标 IsVisible:boolean NotifyIcon是否显示的属性 Title:string 通知区图标上的提示(最多64个字符) PopupMenu:TPopupMenu 点击通知区图标弹出的菜单 PopupStyle:TPopupStyle 弹出菜单的方式 TPopupStyle=Set of (Left_Click,Right_Click,Left_DbClick,Right_DbClick); 方法(methods): ShowIcon 将图标显示在通知区上 HideIcon 将通知区上的图标隐藏 ModifyIcon 修改通知区上的图标(若IsVisible=false,则不显示出来) Create(AOwner: TComponent); override; 构造方法 Destroy; override; 析构方法 事件(Events): OnIconMouseDown: procedure(Sender:TObject;x,y:Word;WhoButton:TWhoButton) of Object; ( 在Mouse点击通知区上的图标时发生,x,y为Mouse在屏幕上的坐标, WhoButton=b_Left为点击左键,WhoButton=b_Right为点击右键, ) OnIconDoubleClick: procedure(Sender:TObject;x,y:Word;WhoButton:TWhoButton) of Object; ( 在Mouse双击通知区上的图标时发生,x,y为Mouse在屏幕上的坐标, WhoButton=b_Left为双击左键,WhoButton=b_Right为双击右键, ) 关于Demo: 这个演示程序给出了TNotifyIcon的基本用法.
包含文件: NotifyIcon.dcr NotifyIcon.pas DemoUnit.pas DemoUnit.dfm PopUnit.pas PopUnit.dfm Demo.dpr Readme.txt
声明: TNotifyIcon 控件 V 1.01 1.这是一个免费控件. 2.如果你使用它,请发一个E-Mail给作者,谢谢. 3我在Delphi3.0 & 4.0 上使用成功 4.若要传播它,请完全分发上述8个文件
作者 南昌大学计算系95(1) 付昱纲 1998.8.17 21:50 E-mail fyg@163.net
unit NotifyIcon;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DsgnIntf,ShellApi,ExtCtrls,Menus;
const WM_MY_Notify=WM_USER+100; type
TPopupStyle=Set of (Left_Click,Right_Click,Left_DbClick,Right_DbClick); TWhoButton=(b_Left,b_Right); TMouseEvent= procedure(Sender:TObject;x,y:Word;WhoButton:TWhoButton) of Object;
//---------class TNotifyIcon--------- TNotifyIcon = class(TCustomControl) private { Private declarations } FIcon:TIcon; FPda:PNOTIFYICONDATA; FTitle:string; FIconVisible:boolean; FPopupMenu:TPopupMenu; FPopupStyle:TPopupStyle; FOnIconMouseDown:TMouseEvent; FOnIconDoubleClick:TMouseEvent; procedure SetIcon(Icon:TICON); procedure SetTitle(NewTitle:string); function IsShowing:boolean; procedure ShowIt(Accept:boolean); procedure NotifyIconClick(var msg : TMessage); Message WM_My_Notify; protected { Protected declarations } public { Public declarations } property IsVisible:boolean read IsShowing write ShowIt; constructor Create(AOwner: TComponent); override; procedure ShowIcon; procedure HideIcon; destructor Destroy; override; procedure ModifyIcon(NewIcon:TIcon); procedure Paint;override; published { Published declarations } property Height default 33; property Width default 33; property NotifyIcon:TIcon read FIcon write SetIcon; property Title:string read FTitle write SetTitle ; property OnIconDoubleClick:TMouseEvent read FOnIconDoubleClick write FOnIconDoubleClick; property OnIconMouseDown:TMouseEvent read FOnIconMouseDown write FOnIconMouseDown; property PopupMenu:TPopupMenu read FPopupMenu write FPopupMenu; property PopupStyle:TPopupStyle read FPopupStyle write FPopupStyle default []; end;
procedure Register;
implementation
procedure Register; begin RegisterComponents(''''MyControl'''', [TNotifyIcon]); end;
procedure TNotifyIcon.ShowIt(Accept:boolean); begin if Accept=true then ShowIcon else HideIcon; end;
procedure TNotifyIcon.Paint; begin if (csDesigning in ComponentState) then begin Width:=33; Height:=33; With Canvas do begin Brush.Color:=clInfoBk; Ellipse(0,0,Self.Width,Self.Height); Font.Color:=clBlue; Brush.Style:=bsClear; FloodFill(5,5,clInfoBk,fsBorder); Brush.Color:=clInfoBk; TextOut(3,Self.Height div 2-6,''''Notify''''); end end; end;
procedure TNotifyIcon.NotifyIconClick(var msg : TMessage); var p:TPoint; begin try case msg.LParam of WM_LBUTTONDOWN: begin GetCursorPos(p); if Left_Click in FPopupStyle then begin SetForegroundWindow(ParentWindow); FPopupMenu.Popup(p.x,p.y); end; if Assigned(FOnIconMouseDown) then begin FOnIconMouseDown(Self,p.x,p.y,b_Left); end; end; WM_RBUTTONDOWN: begin GetCursorPos(p); if Right_Click in FPopupStyle then begin SetForegroundWindow(ParentWindow); FPopupMenu.Popup(p.x,p.y); end; if Assigned(FOnIconMouseDown) then begin FOnIconMouseDown(Self,p.x,p.y,b_Right); end; end; WM_LBUTTONDBLCLK: begin GetCursorPos(p); if Left_DbClick in FPopupStyle then begin SetForegroundWindow(ParentWindow); FPopupMenu.Popup(p.x,p.y); end; if Assigned(FOnIconDoubleClick) then begin FOnIconDoubleClick(Self,p.x,p.y,b_Left); end; end; WM_RBUTTONDBLCLk: begin GetCursorPos(p); if Right_Click in FPopupStyle then begin SetForegroundWindow(ParentWindow); FPopupMenu.Popup(p.x,p.y); end; if Assigned(FOnIconDoubleClick) then begin FOnIconDoubleClick(Self,p.x,p.y,b_Right); end; end; end; except end; end;
function MAKELANGID(p, s:word):Cardinal; begin result:= (((s)shl 10) or(p)); end;
constructor TNotifyIcon.Create(AOwner: TComponent); begin try inherited Create(AOwner); FIcon:=TIcon.Create; Height:=36; Width:=36; Visible:=false; FTitle:=''''Welcome''''; FIconVisible:=false; //-------------set tray info--------- ParentWindow:=TWin[1] [2] 下一页 |