如果何我的程序最小化后不显示在任务栏。
只显示在右下角系统栏一个小图标呢?

解决方案 »

  1.   

    在csdn上搜索,好像有这样的帖子
      

  2.   

    转贴
    const WM_MYTRAYICONCALLBACK = WM_USER + 1000;type
      TForm1 = class(TForm)
        ...
        n_MainFromDispOrHide: TMenuItem;
      private
        { Private declarations }
        MyTrayIcon : TNotifyIconData;   //定义一个托盘图标的类
        procedure TrayShow(Sender: TObject);
        procedure WMMyTrayIconCallBack(var Msg : TMessage); //处理点击托盘图标的事件
          message WM_MYTRAYICONCALLBACK;
        procedure n_MainFromDispOrHideClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      ...
    end;procedure TForm1.TrayShow(Sender: TObject);
    //当点击托盘图标时显示或隐含主窗体
    begin
      TrayBarPopMenu.AutoPopup:=False;
      //设定 TNotifyIconData 的记录长度
      MyTrayIcon.cbSize :=SizeOf(tnotifyicondata);
      //确定调用程序的窗体句柄
      MyTrayIcon.Wnd :=Handle;
      //确定图标的 uID
      MyTrayIcon.uID :=1;
      //设定显示标记
      MyTrayIcon.uFlags :=NIF_ICON or NIF_TIP or NIF_MESSAGE;
      //用户自定义消息
      MyTrayIcon.uCallbackMessage := WM_MYTRAYICONCALLBACK;
      //托盘图标的句柄
      MyTrayIcon.hIcon := Application.Icon.Handle;
      //托盘图标的提示信息
      MyTrayIcon.szTip :='定时导数据程序';
      //向托盘中添加图标
      Shell_NotifyIcon(NIM_ADD,@mytrayicon);
    end;procedure TForm1.WMMyTrayIconCallBack(var Msg: TMessage);
    //处理点击托盘图标的事件,根据 WM_MOUSEMOVE 消息的不同情况产生不同的回应
    var
      CursorPos : TPoint;
    begin
      TrayBarPopMenu.AutoPopup:=False;
      case Msg.lParam of
        //左键按下
        WM_LBUTTONDOWN : begin
                           application.MainForm.BringToFront;   //窗体置前
                         end;
        //左键双击
        WM_LBUTTONDBLCLK : begin                                //窗体隐含或显示
                             Application.MainForm.Visible := not Application.MainForm.Visible;
                             SetForegroundWindow(Application.Handle);
                           end;
        //右键按下
        WM_RBUTTONDOWN :   begin                                //显示弹出菜单
                             GetCursorPos(CursorPos);
                             TrayBarPopMenu.Popup(CursorPos.x,CursorPos.y);
                           end;
       end//case
    end;procedure TForm1.n_MainFromDispOrHideClick(Sender: TObject);
    begin
      if Application.MainForm.Visible then
      begin
        if FormStep1.Showing Then FormStep1.Hide;
        if FormStep2.Showing Then FormStep2.Hide;
        Application.MainForm.Hide;
        n_MainFromDispOrHide.Caption :='显示主窗体';
      end
      else
      begin
        Application.MainForm.Show;
        n_MainFromDispOrHide.Caption :='隐藏主窗体';
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);//程序不在任务栏上显示
      TrayShow(Application.MainForm);//显示图标
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Shell_NotifyIcon(NIM_DELETE, @MyTrayIcon);//删除托盘图标
    end; 
      

  3.   

    有个控件,可以用,TCoolTrayIcon
      

  4.   

    我也用TCoolTrayIcon,你可以在网上找一下很好用还可以自动变换图标.
      

  5.   

    同意 angle097113(深思不解) !!!!!