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;      

解决方案 »

  1.   

    请参考
    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
      

  2.   

    多麻烦,找个控件不就OK了,我有一个:http://mentals.yes8.com
      

  3.   

    各位,大家将意思理解错了,我不是要将程序放入系统栏的。而是想在自己程序中主界面最下面一行的statusbar1控件中某一栏放入一个图标。
      

  4.   

    简单的很,将你的statusbar1.panels[i]设为psowner,然后将图标的parent属性设为statusbar1.panels[i]不就行啦?
      

  5.   

    unit statusbar;interfaceuses
      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.