如何设置无标题form空白处可以拖动窗体?~~各位大虾来说说~~

解决方案 »

  1.   

    处理WM_NCHITTEST,设置Message.Result := HTCAPTION即可;
      

  2.   


    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      ReleaseCapture;
      PerForm(WM_syscommand,$F012,0);
    end;
      

  3.   

    楼上bdmh的我设置在form属性里设置 onMouseDown到你这个代码 并且提示unitAbout.pas(45): Undeclared identifier: 'WM_syscommand'然后我声明 WM_syscommand:cardinal; {这个是这样声明吗?}运行后移动窗体还是没反映嘛.点空白处还是移动不了.但是我新建个窗体再运行你那段就可以移动,也不需要声明 WM_syscommand..这个是为什么?是需要设置什么属性吗?
      

  4.   

    晕倒!
    private 
      procedure WMNcHitTest(var Msg :TMessage); message WM_NCHITTEST;procedure TForm1.WMNcHitTest(var Msg :TMessage); 
    begin
      inherited;
      if Msg.Result = HTCLIENT then
        Msg.Result := HTCAPTION;
    end;如果写成如下形式,那么点在最大化、最小化、关闭按钮上,也一样可移动!
    procedure TForm1.WMNcHitTest(var Msg :TMessage); 
    begin
      Msg.Result := HTCAPTION;
    end;再不能移动,就得自己撞墙去了