XE下显示托盘图标(TrayIcon)

 

 

1.拖一个TrayIcon控件

2.拖一个ApplicationEvents控件

3.拖一个PopupMenu控件

将TrayIcon的PopupMenu属性与PopupMenu控件关联

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
unit  UnitMain;
 
interface
 
uses
   Winapi . Windows, Winapi . Messages, System . SysUtils, System . Variants, System . Classes, Vcl . Graphics,
   Vcl . Controls, Vcl . Forms, Vcl . Dialogs, Vcl . AppEvnts, Vcl . ExtCtrls, Vcl . Menus;
 
type
   TForm6 =  class (TForm)
     TrayIcon1: TTrayIcon;
     ApplicationEvents1: TApplicationEvents;
     PopupMenu1: TPopupMenu;
     Exit1: TMenuItem;
     procedure  ApplicationEvents1Minimize(Sender: TObject);    // 窗体最小化时,显示Icon图标
     procedure  TrayIcon1Click(Sender: TObject);
     procedure  FormClose(Sender: TObject;  var  Action: TCloseAction);
     procedure  Exit1Click(Sender: TObject);
     procedure  FormCloseQuery(Sender: TObject;  var  CanClose:  Boolean );  // 关闭之前
     procedure  FormActivate(Sender: TObject);
   private
     { Private declarations }
     RealClose :  Boolean ;          // 关闭标志   是否是真正的关闭
   public
     { Public declarations }
   end ;
 
var
   Form6: TForm6;
 
implementation
 
{$R *.dfm}
 
procedure  TForm6 . FormActivate(Sender: TObject);
begin
   if  Tag= 0  then  begin
     Tag:= 1 ;
     RealClose:= False ;
   end ;
end ;
 
procedure  TForm6 . ApplicationEvents1Minimize(Sender: TObject);
begin
   Hide();                            // 隐藏窗体
   Self . WindowState := TWindowState . wsMinimized;   // 最小化
   TrayIcon1 . Visible:= True ;                // 显示图标
end ;
 
procedure  TForm6 . Exit1Click(Sender: TObject);  // 菜单里的真正退出
begin
   RealClose :=  True ;
   Self . close();
end ;
 
procedure  TForm6 . FormClose(Sender: TObject;  var  Action: TCloseAction);
begin
   TrayIcon1 . Visible:= False ;        // 隐藏Icon
   TrayIcon1 . Free;            // 释放ICON
end ;
 
procedure  TForm6 . FormCloseQuery(Sender: TObject;  var  CanClose:  Boolean );
begin
   CanClose:=RealClose;
   if ( not  RealClose)  then  ApplicationEvents1Minimize( nil );
end ;
 
procedure  TForm6 . TrayIcon1Click(Sender: TObject);
begin
   TrayIcon1 . Visible:= False ;
   Self . Show();
   Self . WindowState := TWindowState . wsNormal;
   Application . BringToFront();  // 前靠
end ;
 
end .

 

 
分类:  Delphi

你可能感兴趣的:(XE下显示托盘图标(TrayIcon))