try this:///need uses shellapiconst
  {Put Your Const Here!!}
   icon_Id=1;
   icon_click_even=wm_user+1;
procedure icon_click(var msg: Tmessage); message icon_click_even;var 
   normalicon:ticon;function install_icon():boolean;
var
  icondata:tnotifyicondata;
begin
   normalicon:=ticon.create;
   normalicon.loadfromfile('gao2.ico'); //¶ÁÈëͼ±êÎļþ£¬²¢½«Ö¸Õ붨λ
   icondata.cbsize:=sizeof(icondata); //¶¨Òå´Ë½á¹¹ÌåµÄ´óС
   icondata.wnd:=form1.handle;  //½ÓÊÕ״ָ̬ʾÇøÊó±êʼþµÄ´°¿ÚµÄ¾ä±ú£¬ÀýÈ磺form1.handle;
   icondata.uid:=icon_id; //ͼ±êµÄIDºÅ£¬¼´Í¼±êµÄ±àºÅ;
   icondata.uflags:=nif_icon or nif_message or nif_tip;
   //¾ö¶¨"NIF_icon","NIF_MESSAGE","NIF_TIP"ÕâÈý¸ö²ÎÊýÊÇ·ñÓÐЧ
   // NIF_MESSAGE 0X1 (uCallbackMessage²ÎÊýÓÐЧ)
   // NIF_ICON 0X2   (hicon is valid²ÎÊýÓÐЧ)
   // NIF_TIP 0X4   (szTip is valid²ÎÊýÓÐЧ)
   icondata.ucallbackmessage:=icon_click_even;
   icondata.hicon:=normalicon.handle;
   icondata.sztip:='你今天有'+inttostr(DataModule1.ADODataSet1.RecordCount)+'封邮件需处理');
   shell_notifyicon(nim_add,@icondata);
   //show_trayicon:=true;
end;procedure Tform1.icon_click(var msg: Tmessage);
var
  p:tpoint; //¶¨ÒåÒ»¸öÖ¸Õë±äÁ¿
begin
   if(msg.lparam=wm_rbuttondown) then  //¶Ô½ÓÊÕµ½²ÎÊý½øÐд¦Àí
     begin
       getcursorpos(p);      //È¡Êó±êµÄ×ø±ê
       pop1.popup(p.x,p.y);  //ÔÚ¸ÃλÖÃÏÔʾ²Ëµ¥
      end;
   if(msg.lparam=wm_lbuttondown) then
      begin
         MainFrm.show;
          ......
      end;
end;procedure TMainFrm.FormShow(Sender: TObject);
begin
  if DataModule1.ADODataSet1.RecordCount<>0 then
        showmessage('你今天有'+inttostr(DataModule1.ADODataSet1.RecordCount)+'封邮件需处理');
     install_icon; 
        else  MainFrm.hide;
end;

解决方案 »

  1.   

    用到了shell-notifyicon函数和tnotifyicondata记录,
    var
      s:tnotifyicondata;
    begin
      //将s记录填写完成
      shell_notifyicon(nim_add,@s);
    end;
      

  2.   

    我这里没有COOLTRAYICON,所以我的回答只是建议性的。一般这样的控件都会让主窗体直接最小化成图标,(找找看这样的属性,如果没有,你直接创建的时候让主窗体最小化或隐藏,还可以去掉任务栏上的显示。)
    你在SHOW事件里这样写,如果记录个数不等于0,则showmessage,然后窗体
    show出来,用showwindow函数就该行了。
      

  3.   

    to shangshang:你的方法我早试过,主要的问题是在窗题创建的时候根本不能访问窗体上面的控件,取不到记录个数,如果想我现在一样把条件判断放在show事件中,要么直接最小化了不执行showmessage,要么直接normal显示...说起来比较复杂你试试就知道了(另cooltrayicon提供原代码)
    to GWFXP:你的方法好象可以实现的样子, 可惜我看不懂,  手上也没有资料可查,能推荐网上的资料或具体的书本给我么?