⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 精彩编程百例51~75 其中有 cpu速度测试 检测声卡 查询内存信息 图像处理技巧 模拟放大镜效果等待
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages,shellapi, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus;
const 
  ICON_ID=1; 
  //ICON的ID标志 
  MI_ICONEVENT=WM_USER+1; 
  //定义ICON事件消息
type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    add1: TMenuItem;
    enable1: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure add1Click(Sender: TObject);
    procedure enable1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
  private
    { Private declarations }
      { Private declarations } 
    NormalIcon,DisabledIcon:TIcon;
    //允许和禁用两种状态下的图标
    Status:Boolean; 
    //"允许使用"还是"禁止使用"的判断标准
    procedure InstallIcon;
    procedure ChangeIcon(s:Boolean); 
    procedure UnInstallIcon; 
    procedure IconOnClick(var message:TMessage); message MI_ICONEVENT;
  //捕捉消息MI_ICONEVENT的过程IconOnClick的声明

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.ChangeIcon(s:Boolean); 
//ChangeIcon过程,改变程序在状态栏的图标
var
  IconData:TNotifyIconData; 
begin 
  IconData.cbSize:=SizeOf(IconData); 
  IconData.Wnd:=Handle; 
  IconData.uID:=ICON_ID; 
  if s=False then //禁止使用 
  begin 
    IconData.hIcon:=DisabledIcon.Handle; 
    Status:=False; 

  end 
  else //允许使用
  begin 
    IconData.hIcon:=Normalicon.Handle; 
    Status:=True;

  end; 
  IconData.uFlags:=NIF_ICON; 
  Shell_NotifyIcon(NIM_MODIFY,@IconData); 
end; 
procedure TForm1.IconOnClick(var message:TMessage); 
//鼠标单击指示状态栏对应的图标事件
var
  p:TPoint; 
begin
  //如果鼠标左键按下,并且允许显示,则显示Form2
  if((message.lParam=WM_LBUTTONDOWN) and (Status=True)) then
    Form2.Show; 
  //如果鼠标右键按下,则弹出菜单
  if(message.lParam=WM_RBUTTONDOWN)then 
  begin 
    GetCursorPos(p); 
    PopupMenu1.Popup(p.x,p.y);
  end; 
end; 
procedure TForm1.InstallIcon;
//导入图标
var
  IconData:TNotifyIconData;
begin
  NormalIcon:=TIcon.Create;
  DisabledIcon:=TIcon.Create;
  NormalIcon.LoadFromFile('normal.ico');
//引入允许使用的图标
  DisabledIcon.LoadFromFile('disable.ico');
//引入禁止使用的图标
  IconData.cbSize:=SizeOf(IconData);
  IconData.Wnd:=Handle; 
  IconData.uID:=ICON_ID; 
  IconData.uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
  IconData.uCallBackMessage:=MI_ICONEVENT; 
  IconData.hIcon:=NormalIcon.Handle; 
  IconData.szTip:='给指示状态栏加图标的例程'; 
  //鼠标悬在状态指示栏对应的图标上时的提示信息 
  Shell_NotifyIcon(NIM_ADD,@IconData); 
end; 
procedure TForm1.UnInstallIcon; 
//卸载图标
var 
  IconData:TNotifyIconData; 
begin 
  IconData.cbSize:=SizeOf(IconData); 
  IconData.Wnd:=Handle; 
  IconData.uID:=ICON_ID; 
  Shell_NotifyIcon(NIM_DELETE,@IconData);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin 
  UnInstallIcon;
  //卸载图标
  NormalIcon.Free;
  DisabledIcon.Free;
  //释放两个图标资源
end;

procedure TForm1.FormCreate(Sender: TObject);
begin 
  Status:=True; 
  InstallIcon; 
  //导入图标
  ChangeIcon(True); 
 //改变为normal图标
  ShowWindow(Application.Handle,SW_HIDE);
//隐藏主窗体 
  SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); 
 //在切换状态栏上不显示程序图标
end; 

procedure TForm1.FormActivate(Sender: TObject);
begin 
  Form1.width:=0; 
  Form1.Height:=0; 
  ShowWindow(Application.Handle,SW_HIDE); 
  //隐藏Form1
end; 

procedure TForm1.add1Click(Sender: TObject);
begin 
  Form2.Show; 
 //显示主窗体
end; 

procedure TForm1.enable1Click(Sender: TObject);
begin 
  if (Status=True) then 
  //根据状态更改菜单项标题 
  begin 
    ChangeIcon(False); 

  end
  else 
  begin 
    ChangeIcon(True); 

  end; 
end; 


procedure TForm1.N2Click(Sender: TObject);
begin

  form1.Close;
end;

end.
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -