我就是想做成QQ自动隐藏的功能?如何实现?

解决方案 »

  1.   

    可怜,每人会贴,那么久了。 用frame就很好做了
      

  2.   

    简单的实现方法:formonpaint的时候监测left,top,right(screen.width-left-width),看看与屏幕边界的距离是否应该停靠。如果是,以停靠到屏幕作变为例,用一个循环,让你的form的left递减,直到form右边有1-4象素露在外面,并设置自身状态为“已经隐藏”。(别忘了循环过程中application.processmessages)在formonmousemve,onmouseon(不知道vcl能否提供鼠标进入时候的事件)的时候,监测是否已经隐藏,如果是,那么就用一个和刚才隐藏相反的循环,让form现身!关于alt+ctrl+x等热键功能,如果你想玩cs的时候还能好使,就用全局键盘钩子,别用registerhotkey
      

  3.   

    当窗体不在焦点时就form.visible:=false不就行了?
      

  4.   

    在窗口中放一个timer,在ontimer事件中加如下代码。
    procedure TForm1.Timer1Timer(Sender: TObject);
    var va1,va2:variant;
      vs1,vs2:string;
    begin
      va1:= mouse.CursorPos.x;
      vs1:=string(va1);
      va2:= mouse.CursorPos.y;
      vs2:=string(va2);
     if (((form1.left<=0) or
        (form1.top<=0) or
        (form1.left+form1.Width >screen.Width ))  and
        ((strtoint(vs2)>form1.Height+form1.top) or
         (strtoint(vs1)>form1.width+form1.left) or
          (strtoint(vs1)<form1.left)) and
           (form1.top<=0)) then
        begin
          borderstyle:=bsnone;
          form1.top:=0;
          form1.Height:=3;
          exit;
        end; if  (form1.height<20) and   (vs2='0' )
        then
        begin
           borderstyle:=bssizeable;
           form1.height:=375;
        end;
    end;
    调试通过
      

  5.   

    对了,interval要小一点效果才好
    200吧