现在我终于能回答你的问题了,为了这个问题我问了好多人,也看了好多书,累死累活的
你说我这样做容易吗?......呵呵,闲话少说了.  对你所说的问题,我自己编了一个程序,就象QQ一样,当鼠标移到上面时弹出来,移走时缩进去;我是这样实现的:
1) 新建一个工程project,然后在form1放置一个timer组件,适当的设置时间,当然越小反应
    越快,然后双击它的ontime事件生成一个procedure,过程代码如下:
var
  i:Tpoint;
begin
  getcursorpos(i);   //获得当前鼠标的位置;
  if form1.top<=0    //窗体上端位置在<=0的位置时,才能缩进去;
    then with form1 do
      if (x>left+width) or (x<left) or (y>top+height) //判断鼠标位置是否在窗体上
        then begin
               top:=0;     //把窗体上端位置设为0;
               height:=3;  //窗体缩进去;
               borderstyle:=none;
               Timer1.Enabled:=false; 
             end;
  end;2) 当鼠标移到窗体上时,窗体弹出来,因此可在在窗体的OnMouseMove事件当中,
    写下如下的代码:
       begin
         with form1 do
           begin
             Height:=你原来设置的窗体高度;
             borderstyle:=bsSizeable;
             Timer1.Enabled:=true;
           end;               
     
   
   

解决方案 »

  1.   

    呵呵,试试我的程序,在工具栏上点右键,选择“自动隐藏”,效果不错吧。
    http://www.software-power.com/sc/programs/minibar.zip
      

  2.   

    对了,在上面的x,y前面加上i,即变成i.x,i.y,不好意思,没有检查清楚;还有就是刚开始运行时,即使鼠标不在窗体上,窗体也没有缩进去,而是过了一秒钟才缩进去
    要想刚开始就让他缩进去,那么在窗体的Oncreate事件中写上如下代码:
     begin
       timer1timer(nil);
     end;现在基本上差不多了,那么程序运行后的执行为:
     首先timer1启动判断过程,判断鼠标是否在窗体上,如果在,那么不做任何事情;如果不在,
     则窗体缩进去,同时timer1的enabled变为false,timer1不再运行;当鼠标从窗体外移到窗体上,那么触发onmousemove的过程,将窗体恢复原样,同时timer的enabled变为true,timer启动;这样周而复始,从而达到要求;程序已经在电脑上运行过了,行!因为网吧的服务器没有软驱,所以我只有这样叙述了,真是麻烦!如果有问题,再联系;
    e-mail:  [email protected]这个本来上次就发的,谁知道留言不准连续三次,所以等到现在了