• 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
  • 相关阅读:
    C++ 如何判断所调用的重载函数
    C++ 入门5 类和动态内存分配(一)
    c#动态创建ODBC数据源
    设为首页,加入收藏,联系我们
    ASP.NET 2.0中CSS失效
    typedef的四个用途和两个陷阱(转)
    VC++实现应用程序对插件的支持(转)
    DOM无关事件
    How to Migrate from WCF Web API to ASP.NET Web API
    Using ASP.NET Web API with ASP.NET Web Forms
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/9401637.html
Copyright © 2020-2023  润新知