如何把窗体关闭到系统托盘

unit Unit1;  
  
interface  
  
uses  
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  Dialogs, ExtCtrls, StdCtrls, AppEvnts;  
  
type  
  TForm1 = class(TForm)  
    TrayIcon1: TTrayIcon;  
    Button1: TButton;  
    procedure TrayIcon1Click(Sender: TObject);  
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);  
    procedure Button1Click(Sender: TObject);  
  end;  
  
var  
  Form1: TForm1;  
  
implementation  
  
{$R *.dfm}  
  
{关闭}  
procedure TForm1.Button1Click(Sender: TObject);  
begin  
  Application.Terminate;  
end;  
  
{点击关闭按钮时让窗体最小化到系统托盘}  
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);  
begin  
  Tag := Ord(WindowState);  
  WindowState := wsMinimized;  
  TrayIcon1.SetDefaultIcon;  
  TrayIcon1.Visible := True;  
  Hide;  
  CanClose := False;  
end;  
  
{点击系统托盘中的图标恢复窗口}  
procedure TForm1.TrayIcon1Click(Sender: TObject);  
begin  
  TrayIcon1.Visible := False;  
  Show;  
  WindowState := TWindowState(tag);  
  SetForegroundWindow(Handle);  
end;  
  
end.  
--------------------------------------------------------------------------------  
  
窗体文件:  
--------------------------------------------------------------------------------  
  
  
object Form1: TForm1  
  Left = 0  
  Top = 0  
  Caption = 'Form1'  
  ClientHeight = 206  
  ClientWidth = 339  
  Color = clBtnFace  
  Font.Charset = DEFAULT_CHARSET  
  Font.Color = clWindowText  
  Font.Height = -11  
  Font.Name = 'Tahoma'  
  Font.Style = []  
  OldCreateOrder = False  
  OnCloseQuery = FormCloseQuery  
  PixelsPerInch = 96  
  TextHeight = 13  
  object Button1: TButton  
    Left = 232  
    Top = 40  
    Width = 75  
    Height = 25  
    Caption = 'Button1'  
    TabOrder = 0  
    OnClick = Button1Click  
  end  
  object TrayIcon1: TTrayIcon  
    OnClick = TrayIcon1Click  
    Left = 160  
    Top = 104  
  end  
end  

  

posted @ 2014-10-18 13:56  孤舟残月浅笑嫣然  阅读(453)  评论(0编辑  收藏  举报