function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconData): BOOL; stdcall; 请参考:
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.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;
解决方案 »
- ~~~~~~~~~~~~~~~~~透明窗体的问题,求助!!!!~~~~~~~~~~~`
- 大哥哥,大姐姐,点阵:如何将输入的文字转换成指定大小的点阵?
- ReportMachine 安装方法
- 水晶报表如何和数据库组件连接
- 一个ADOQuery怪的不能再怪的问题,大家请看....
- 你能解决吗?马上送分!Fatal Error
- 请问:有人遇到过ntdll.dll报错的时候吗?
- 问一个非常之菜的问题
- 已知其他程序上控件的句柄,如何设置焦点?
- 哇呀呀,偶上午的这个贴子怎么打不开?服务器怎么近来老出错?只好再问一次,请大家推荐一个制作帮助的软件吧,偶用了耶书制造,感觉不太好,有没有其他中文的呢?//牛虻
- Delphi编程网站大全 玩Delphi的哥们千万别错过!
- 急:DELPHI与数据库连接
unit main;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
ShellAPI, Dialogs, ImgList, Menus;const
Icon_ID=1;// 图标在本应用程序中的编号
MyIcoMes=WM_USER+1; // 图标上的鼠标事件type
TmainForm = class(TForm)
main_pop: TPopupMenu;
pop_about: TMenuItem;
N7: TMenuItem;
pop_quit: TMenuItem;
N1: TMenuItem;
status1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure pop_quitClick(Sender: TObject);
procedure pop_aboutClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure status1Click(Sender: TObject); private
normalIcon,disabledIcon:TIcon;//需放在状态指示区的图标
status: Boolean;
procedure MyIcoMesDo(var Msg : TMessage);Message MyIcoMes; //托盘图标的返回消息
procedure installIcon;
procedure UninstallIcon;
procedure ChangeIcon(status:Boolean); //根据参数,显示不同的图标
{ Private declarations }
public
{ Public declarations }
end;const
//版本号
ver = '1.0';var
mainForm: TmainForm; PNotify:PNotifyIconDataA; //托盘图标结构
Mouse_Point : TPoint; //当前鼠标位置implementation{$R *.DFM}procedure TmainForm.installIcon;
var icondata:TNotifyIconData;
begin
normalIcon:=TIcon.Create;
disabledIcon:=TIcon.Create;
normalicon.LoadFromFile ('wang.ico');
disabledIcon.LoadFromFile ('wang1.ico');
IconData.cbSize:=Sizeof(IconData);
IconData.Wnd :=Handle;
IConData.uID :=Icon_ID;
IconData.uFlags :=NIF_ICON or NIF_MESSAGE or NIF_TIP;
IconData.uCallbackMessage :=MyIcoMes;
IConData.hIcon :=normalIcon.Handle ;
IconData.szTip :='fuck';
Shell_NotifyIcon(NIM_ADD,@IconData);
end;procedure Tmainform.UninstallIcon ;
var
IconData:TNotifyIconData;
begin
//
IconData.cbSize :=Sizeof(IconData);
IconData.Wnd :=handle;
IconData.uID :=ICON_ID;
Shell_NotifyIcon(NIM_DELETE,@IconData);
end;procedure TmainForm.ChangeIcon(status:boolean);
var
IconData:TNotifyIconData;
begin
IconData.cbSize :=Sizeof(IconData);
IconData.Wnd :=Handle;
IconData.uID :=ICON_ID;
if not status then IconData.hIcon := normalicon.Handle
else IconData.hIcon :=disabledIcon.Handle;
IconData.uFlags :=NIF_ICON;
Shell_NotifyIcon(NIM_MODIFY,@IconData);
end;procedure TmainForm.FormCreate(Sender: TObject);
begin
installIcon; //建立“托盘”图标
ChangeIcon(False);
ShowWindow(Application.handle,SW_HIDE); //隐藏应用程序主窗口机
end;procedure Tmainform.MyIcoMesDo(var Msg:TMessage);
Var Mouse_Point : TPoint; //当前鼠标位置
begin
if (Msg.LParam=WM_LBUTTONDBLCLK) and mainform.Enabled then
mainform.Visible:=not mainform.Visible; //双击图标,显示(隐藏)窗口 if (Msg.LParam=WM_RBUTTONUP) and mainform.Enabled then
begin //右键单击,显示菜单
GetCursorPos(Mouse_Point);
main_pop.Popup(Mouse_Point.x,Mouse_Point.y);
ChangeIcon( status );
end;
end;procedure TmainForm.FormShow(Sender: TObject);
begin
//
end;procedure TmainForm.FormHide(Sender: TObject);
begin
//
end;procedure TmainForm.FormDestroy(Sender: TObject);
begin
//
end;procedure TmainForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
18: //弹出pop菜单 "Alt"
begin
GetCursorPos(Mouse_Point);
main_pop.Popup(Mouse_Point.x,Mouse_Point.y);
end;
end;
end;procedure TmainForm.pop_quitClick(Sender: TObject);
begin
Close;
end;procedure TmainForm.pop_aboutClick(Sender: TObject);
begin
//
end;procedure TmainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
unInstallIcon; //删除任务栏图标
normalicon.Free ;
disabledIcon.Free;
end;procedure TmainForm.FormActivate(Sender: TObject);
begin
ShowWindow( Application.Handle, SW_HIDE );
end;procedure TmainForm.status1Click(Sender: TObject);
begin
status := not status;
if status then status1.Caption := 'Enable'
else status1.Caption := 'Disable' ;
changeIcon(status);
end;end.
或者3方控件,例如rxlib中的一个控件就可以,我的主页可以下载mantousoft.2699.com
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, Menus;type
TForm1 = class(TForm)
Mn: TMainMenu;
n1: TMenuItem;
n2: TMenuItem;
n11: TMenuItem;
StatusBar1: TStatusBar;
procedure StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
procedure insertprocressbar1click(sender:Tobject);
private
colorindex:integer;
bookopen:boolean;
ssbmp:Tbitmap;
progessTpogressbar;
statusdraw:Trect; { Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.insertprocressbar1click(sender: Tobject);
var i,count:integer;
stapanplewidth:integer;begin
Progress:=Tprogressbar:create(Form1);
conut:=300;
stapanlewidth:=status.panels.items[1].width;
status.panels.items[2].width:=150;
stattus.repaint;
with progress do
begin
top:=statusdrawrect.top;
left:=statusdrawrect.left;
width:=statusdrawrect.right-statusdrawtrect.top;
height:=statusdrawrect.bottom-statusdrawtrect.top;
visible:=true;
try
parent:=status;
min:=0;
max:=count;
step:=1;
for i:=0 to count do step;
showmessage('sdfsdf');
finelly;
free;
edn;
status.panels.itmes[2].width:=stapanelwidth;
end;
end;
end;procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
Statusdrawrect:=rect;
end;end.