安装新组件

看过一篇一个简单组件的制作过程:地址  http://www.openitpower.com/wenzhang/97/10420_1.html

安装组件如下(安装托盘组件为例)
1. 新建一个单元保存名称AppTrayIcon.pas ,复制如下代码到此单元中,保存。
2.Component—>install Component
Unit File name 就是刚才新建的单元AppTrayIcon.pas,点ok就可以了


None.gif unit AppTrayIcon;
None.gif
None.gifinterface
None.gif
None.gifuses
None.gif  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
None.gif  Dialogs,Menus,ShellAPI;
None.gif
None.giftype
None.gif  TRDownEvent 
=  procedure (Sender: TObject;Pos:TPoint) of  object ;
None.gif  TAppTrayIcon 
=  class(TComponent)
None.gif  
private
None.gif    { 
Private  declarations }
None.gif    FNotiFicationHandle : HWnd;
None.gif    FTrayIcon : TIcon;
None.gif    FShowHint : 
Boolean ;
None.gif    FHint : 
String ;
None.gif    FActive : 
Boolean ;
None.gif    FCurrentlyActive : 
Boolean ;
None.gif    FOnDblClick : TNotifyEvent;
None.gif    FOnRDown : TRDownEvent;
None.gif    FPopupMenu: TPopupMenu;
None.gif
None.gif    Procedure NotificationWndProc(Var Message : TMessage);
None.gif    Procedure SetShowHint(
Const  Value :  Boolean );
None.gif    Procedure SetHint(
const  Value :  String );
None.gif    Procedure SetTrayIcon(
const  Value : TIcon);
None.gif    Procedure SetActive(
Const  Value :  Boolean );
None.gif    Procedure SetPopupMenu(
const  Value :TPopupMenu);
None.gif
//     Procedure SetPopUpPos( Const  Pos : TPoint);
None.gif  protected
None.gif    { Protected declarations }
None.gif    Procedure DoDblClick;
None.gif    Procedure DoRDown(pos:TPoint);
None.gif    Procedure Loaded;override;
None.gif    Procedure OnAppMinimize(Sender : TObject);
None.gif    
Function  SendTrayMessage(AMessage:DWORD): Boolean ;
None.gif
None.gif  
public
None.gif    { 
Public  declarations }
None.gif    Constructor Create(AOwner : TComponent);Override;
None.gif    Destructor Destroy;override;
None.gif    Procedure RemoveTrayIcon;
None.gif    Procedure RestoreApp;
None.gif    Procedure ShowTrayIcon;
None.gif    Procedure RemoveFromTaskBar;
None.gif    Procedure ShowInTaskBar;
None.gif  published
None.gif    { Published declarations }
None.gif    
Property  Active :  Boolean  read FActive write SetActive;
None.gif    
Property  Hint :  String  read FHint write SetHint;
None.gif    
Property  OnDblClick : TNotifyEvent read FOnDblClick write FOnDblClick;
None.gif    
Property  PopUpMenu : TPopupMenu read FPopupMenu write SetPopupMenu;
None.gif    
Property  ShowHint :  Boolean  read FShowHint write SetShowHint;
None.gif    
Property  TrayIcon : TIcon read FTrayIcon write SetTrayIcon;
None.gif    
Property  OnRDown : TRDownEvent read FOnRDown write FOnRDown;
None.gif  
end ;
None.gif
None.gifprocedure Register;
None.gif
None.gifimplementation
None.gif
None.gif
const
None.gifID_TRAYICON 
=   1 ;
None.gifUWM_TRAYICON 
=  WM_USER  +   1 ;
None.gif
None.gifprocedure Register;
None.gifbegin
None.gif  RegisterComponents(
' TrayIcon', [TAppTrayIcon]);
None.gif
end ;
None.gif
None.gif{ TAppTrayIcon }
None.gif
None.gifconstructor TAppTrayIcon.Create(AOwner: TComponent);
None.gifbegin
None.gif  inherited Create(AOwner);
None.gif  FNotificationHandle :
=  AllocateHWnd(NotificationWndProc);
None.gif  FTrayIcon :
=  TIcon.Create;
None.gif  Application.OnMinimize :
=  OnAppMinimize;
None.gif
end ;
None.gif
None.gifdestructor TAppTrayIcon.Destroy;
None.gifbegin
None.gif  
if  FCurrentlyActive  then
None.gif    RemoveTrayIcon;
None.gif
None.gif  FTrayIcon.Free;
None.gif
None.gif  
if  FNotificationHandle  <>   0   then
None.gif    DeallocateHWnd(FNotificationHandle);
None.gif  inherited Destroy;
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.DoDblClick;
None.gifbegin
None.gif  
if  Assigned(OnDBlClick) then
None.gif    OnDblClick(Self);
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.DoRDown(pos:TPoint);
None.gifbegin
None.gif  
if  Assigned(Onrdown) then
None.gif    OnRDown(Self,pos);
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.Loaded;
None.gifbegin
None.gif  inherited Loaded;
None.gif  
if   not  (csDesigning in ComponentState)  then
None.gif  begin
None.gif    
if  FTrayIcon.Handle  =   0   then
None.gif      FTrayIcon.Assign(Application.Icon)
None.gif  
end ;
None.gif
None.gif  SetTrayIcon(FTrayIcon);
None.gif
None.gif  
if  FActive  then
None.gif    ShowTrayIcon;
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.NotificationWndProc(var Message: TMessage);
None.gifVar
None.gif  Pt:TPoint;
None.gifbegin
None.gif  
if  Message.Msg  =  UWM_TRAYICON  then
None.gif  begin
None.gif    
case  Message.LParam of
None.gif      WM_LBUTTONDBLCLK:
None.gif        DoDblClick;
None.gif      WM_RBUTTONDOWN:
None.gif      begin
None.gif        GetCursorPos(Pt);
None.gif        
if  Assigned(FPopupMenu)  then
None.gif        begin
None.gif          
// RestoreApp;
None.gif          GetCursorPos(Pt);
None.gif          FPopupMenu.Popup(Pt.X ,Pt.Y);
None.gif        
end ;
None.gif        DoRDown(Pt);
None.gif      
end ;
None.gif    
end ;
None.gif  
end ;
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.OnAppMinimize(Sender: TObject);
None.gifbegin
None.gif  
if  FCurrentlyActive  then
None.gif    RemoveFromTaskBar;
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.RemoveFromTaskBar;
None.gifbegin
None.gif  
if   not (csDesigning in ComponentState)  then
None.gif  begin
None.gif    SendTrayMessage(NIM_ADD);
None.gif    ShowWindow(Application.Handle,SW_HIDE);
None.gif    ShowWindow(Application.MainForm.Handle,SW_HIDE);
None.gif  
end ;
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.RemoveTrayIcon;
None.gifbegin
None.gif  
if  FCurrentlyActive  then
None.gif    
if  SendTrayMessage(NIM_DELETE)  then
None.gif    begin
None.gif      FCurrentlyActive :
=   False ;
None.gif      ShowInTaskBar;
None.gif    
end ;
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.RestoreApp;
None.gifvar
None.gif  wnd: HWND;
None.gif  child: HWND;
None.gifbegin
None.gif  ShowInTaskBar;
None.gif  Application.MainForm.Visible :
=   True ;
None.gif  child :
=  Application.MainForm.Handle;
None.gif  wnd :
=  child;
None.gif  
while  child  <>   0   do
None.gif  begin
None.gif    wnd :
=  child;
None.gif    child :
=  GetTopWindow(wnd);
None.gif  
end ;
None.gif  SetForeGroundWindow(wnd);
None.gif  BringWindowToTop(wnd);
None.gif  Application.BringToFront;
None.gif  SetFocus(Application.MainForm.Handle);
None.gif
end ;
None.gif
None.gif
function  TAppTrayIcon.SendTrayMessage(AMessage: DWORD):  Boolean ;
None.gifVar
None.gif  Flags : 
Integer ;
None.gif  NotifyIconData : TNotifyIconData;
None.gifbegin
None.gif  Result :
=   True ;
None.gif  
if  csDesigning in ComponentState  then
None.gif    
exit ;
None.gif  Flags :
=  NIF_MESSAGE  or  NIF_ICON;
None.gif  
if  FShowHint  then
None.gif    Flags :
=  Flags  or  NIF_TIP;
None.gif  FillChar(NOtifyIconData,Sizeof(NotifyIconData),
0 );
None.gif  
with  NotifyIconData  do
None.gif  begin
None.gif    cbSize :
=  sizeof(TNotifyIconData);
None.gif    Wnd :
=  FNotificationHandle;
None.gif    uID :
=  ID_TRAYICON;
None.gif    uFlags :
=  Flags;
None.gif    uCallBackMessage :
=  UWM_TRAYICON;
None.gif    hIcon :
=  FTrayIcon.Handle;
None.gif    StrLCopy(szTip,PChar(FHint),Sizeof(szTip));
None.gif  
end ;
None.gif  Result :
=  Shell_NotifyIcon(AMessage,@NotifyIconData);
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.SetActive(
const  Value:  Boolean );
None.gifbegin
None.gif  FActive :
=  Value;
None.gif  
if  FActive  then
None.gif    ShowTrayIcon
None.gif  
else
None.gif    RemoveTrayIcon;
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.SetHint(
const  Value:  String );
None.gifbegin
None.gif  FHint :
=  Value;
None.gif  SendTrayMessage(NIM_MODIFY);
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.SetPopupMenu(
const  Value: TPopupMenu);
None.gifbegin
None.gif  FPopupMenu :
=  Value;
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.SetShowHint(
const  Value:  Boolean );
None.gifbegin
None.gif  FShowHint :
=  Value;
None.gif  SendTrayMessage(NIM_MODIFY);
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.SetTrayIcon(
const  Value: TIcon);
None.gifbegin
None.gif  FTrayIcon.Assign(Value);
None.gif  SendTrayMessage(NIM_MODIFY);
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.ShowInTaskBar;
None.gifbegin
None.gif  
if   Not (csDesigning in ComponentState)  then
None.gif  begin
None.gif    
if  Application.MainForm  <>  nil  then
None.gif      ShowWindow(Application.MainForm.Handle,SW_SHOWNORMAL);
None.gif 
//    ShowWindow(Application.Handle,SW_RESTORE);
None.gif    ShowWindow(Application.Handle,SW_SHOWNORMAL);
None.gif  
end ;
None.gif
end ;
None.gif
None.gifprocedure TAppTrayIcon.ShowTrayIcon;
None.gifbegin
None.gif  
if  SendTrayMessage(NIM_ADD)  then
None.gif    FCurrentlyActive :
=   True ;
None.gif
end ;
None.gif
None.gif
end .

转载于:https://www.cnblogs.com/sideandside/archive/2007/04/12/710603.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值