谢谢
解决方案 »
- 救急!!!用了多年的delphi6,今天打不开了,要求注册!
- 怎么把内存流中的MHT装入WEBBROSWER中显示?
- 动态库PostTransact.dll函数的调用,我错在哪?
- 有关数据库插入的操作?
- 在本版的第一帖============文本文件操作问题~~~
- 字段唯一及快捷键两个问题(100分),谢谢大家
- TServerSocket 使用多线程,在还有客户端连接时退出,会停顿好久,如何解决?
- 应该使用哪种方法来做这样动态数组或链表?
- delphi操作coreldrwa的CDR文件
- 有用过webbrowser直接显示memorystream流的大虾吗??
- 用Table连接一个FoxPro的dbf文件,说是Invalid Index Descriptor?该怎么办?或者使用什么方法打开该表?
- 如何使用TreeView?????小问题!!
用 TNotifyIconData 即可
2、TNotifyIcon 控件1.01 (Build use Delphi 3.0) 说明:
作用:
往通知区加图标,并可显示,隐藏,修改这个图标.
属性(properties):
NotifyIcon:TIcon 欲加在通知区的图标
IsVisible:boolean NotifyIcon是否显示的属性
Title:string 通知区图标上的提示(最多64个字符)
PopupMenu:TPopupMenu 点击通知区图标弹出的菜单
PopupStyle:TPopupStyle 弹出菜单的方式
TPopupStyle=Set of (Left_Click,Right_Click,Left_DbClick,Right_DbClick);
方法(methods):
ShowIcon 将图标显示在通知区上
HideIcon 将通知区上的图标隐藏
ModifyIcon 修改通知区上的图标(若IsVisible=false,则不显示出来)
Create(AOwner: TComponent); override; 构造方法
Destroy; override; 析构方法
事件(Events):
OnIconMouseDown:
procedure(Sender:TObject;x,y:Word;WhoButton:TWhoButton) of Object;
(
在Mouse点击通知区上的图标时发生,x,y为Mouse在屏幕上的坐标,
WhoButton=b_Left为点击左键,WhoButton=b_Right为点击右键,
)
OnIconDoubleClick:
procedure(Sender:TObject;x,y:Word;WhoButton:TWhoButton) of Object;
(
在Mouse双击通知区上的图标时发生,x,y为Mouse在屏幕上的坐标,
WhoButton=b_Left为双击左键,WhoButton=b_Right为双击右键,
)
工程单元
program Project1;uses
Forms,
Unit1 in 'Unit1.pas' {MainForm};{$R *.RES}begin
Application.Initialize;
Application.ShowMainForm := False;//运行后隐藏主界面
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end.
主程序
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ShellApi, Menus, ImgList, ExtCtrls;const
WM_ICONTRAY = WM_USER + 1;type
TMainForm = class(TForm)
PopupMenu1: TPopupMenu;
N11: TMenuItem;
N21: TMenuItem;
N31: TMenuItem;
Exit1: TMenuItem;
Timer1: TTimer;
ImageList1: TImageList;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure N31Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
private
TrayIconData: TNotifyIconData;
{ Private declarations }
public
procedure TrayMessage(var Msg: TMessage); message WM_ICONTRAY;
{ Public declarations }
end;var
MainForm: TMainForm;implementation{$R *.DFM}procedure TMainForm.TrayMessage(var Msg: TMessage);
var
p : TPoint;
begin
case Msg.lParam of
WM_LBUTTONDOWN:
begin
ShowMessage('右键弹出菜单!');
end;
WM_RBUTTONDOWN:
begin
SetForegroundWindow(Handle);
GetCursorPos(p);
PopUpMenu1.Popup(p.x, p.y);
PostMessage(Handle, WM_NULL, 0, 0);
end;
end;
end;procedure TMainForm.FormCreate(Sender: TObject);
begin
with TrayIconData do
begin
cbSize := SizeOf(TrayIconData);
Wnd := Handle;
uID := 0;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage := WM_USER+1;
hIcon := Application.Icon.Handle;
StrPCopy(szTip, Application.Title);
end; Shell_NotifyIcon(NIM_ADD, @TrayIconData);
end;procedure TMainForm.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @TrayIconData);
end;procedure TMainForm.Timer1Timer(Sender: TObject);
{$J+}
const
Index : Integer = 0;
{$J-}
var
Icon: TIcon;
begin
Inc(Index);
if Index = 2 then Index:=0; Icon:=TIcon.Create;
try
ImageList1.GetIcon(Index,Icon);
TrayIconData.hIcon := Icon.Handle;
Shell_NotifyIcon(NIM_Modify, @TrayIconData);
finally
Icon.Free;
end;
end;
procedure TMainForm.N31Click(Sender: TObject);
begin
Timer1.Enabled:=not Timer1.Enabled;
end;procedure TMainForm.N11Click(Sender: TObject);
begin
MainForm.Show;
end;procedure TMainForm.N21Click(Sender: TObject);
begin
MainForm.Hide;
end;procedure TMainForm.Exit1Click(Sender: TObject);
begin
MainForm.Close;
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, TrayIcon;type
TForm1 = class(TForm)
TrayIcon1: TTrayIcon;
PopupMenu1: TPopupMenu;
mnuOpen: TMenuItem;
mnuExit: TMenuItem;
mnuTip: TMenuItem;
procedure mnuOpenClick(Sender: TObject);
procedure mnuExitClick(Sender: TObject);
procedure mnuTipClick(Sender: TObject);
private
{ Private declarations }
procedure CatchMessage(var Message:TMessage);Message WM_SysCommand;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure Tform1.CatchMessage(var Message:TMessage);
begin
if Message.WParam=SC_MINIMIZE then
begin
Application.Minimize;
Visible := false;
end
else
inherited;
end;procedure TForm1.mnuOpenClick(Sender: TObject);
begin
visible := true;
end;procedure TForm1.mnuExitClick(Sender: TObject);
begin
close;
end;procedure TForm1.mnuTipClick(Sender: TObject);
begin
ShowMessage('Demo');
end;end.
输入以下语句,
showwindow(form1.hanlde,sw_hide);
showwindow(form1.hanlde,sw_hide);
一定要输入两句