像QQ那样的
我也需要啊UP一下

解决方案 »

  1.   

    移动不带标题栏的窗体。
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      ReleaseCapture;
      Perform(WM_SYSCOMMAND, $F012, 0);
    end;
      

  2.   

    移动不带标题栏的窗体
    ReleaseCapture;
    Perform(WM_SYSCOMMAND,$f012,SC_MOVE)
    放在onmousemove里面
      

  3.   

    CM_MouseEnter和CM_MouseLeave消息。
      

  4.   

    留下EMAIL,我有一个演示程序。
      

  5.   

    TO taxi
      像QQ那样的东东,我也要,[email protected]
      

  6.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, Graphics,
      StdCtrls, ExtCtrls;type
      THidePosition = (hpLeft, hpTop, hpRight);  TForm1 = class(TForm)
        Timer1: TTimer;
        procedure FormCreate(Sender: TObject);
        procedure FormShow(Sender: TObject);
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
        procedure FormDestroy(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
        FHided        : Boolean;       //窗体是否已经隐藏
        FHidePosition : THidePosition; //窗体隐藏的位置
        procedure CMMouseEnter(var Message: TMessage); message CM_MouseEnter;
      protected  public
        { Public declarations }  end;var
      Form1: TForm1;implementation{$R *.dfm}
    procedure TForm1.CMMouseEnter(var Message: TMessage);
    begin
      if FHided then
      begin
        case FHidePosition of
          hpLeft  : Left := 0;
          hpTop   : Top := 0;
          hpRight : Left := Screen.Width - Width;
        end;
        FHided := false;
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Constraints.MaxHeight := Screen.Height;
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
    //
    end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
    //
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
    //
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    var
      p: TPoint;
      bInForm: Boolean;
    begin
      if (not FHided) then
      begin
        GetCursorPos(p);
        p := ScreenToClient(p);
        bInForm := (p.X >-5 ) and (p.X <= Width)
                   and (p.Y > -27) and (p.Y <= Height);
        if not bInForm then
        begin
          if ((Left < 10) and (Top < 10))
            or ((Screen.Width - (Left + Width) < 10) and (Top < 10)) then
          begin
            Top := 0 - Height + 2;
            FHidePosition := hpTop;
            FHided := true;
          end
          else if Top < 10 then
          begin
            Top := 0 - Height + 2;
            FHidePosition := hpTop;
            FHided := true;
          end
          else if Left < 10 then
          begin
            Left := 0 - Width + 2;
            FHidePosition := hpLeft;
            FHided := true;
          end
          else if Screen.Width - (Left + Width) < 10 then
          begin
            Left := Screen.Width - 1;
            FHidePosition := hpRight;
            FHided := true;
          end;
        end;
      end;
    end;end.