如何禁止鼠标拖动改变窗口大小和位置,但是可以点击最大化最小化按钮进行改变窗口大小。

解决方案 »

  1.   

    把Form的BorderStyle属性设为bsSingle
      

  2.   

    不行,因为我的是子窗口,所以不能用bsSingle这种形式。还有别的方法吗?
      

  3.   

    BorderStyle属性改成bsNone,然后自己画最大化按钮和最小化按钮
      

  4.   

    拦截窗体 WM_NCHITTEST 消息,自己处理掉
      

  5.   

    最简单的方法是设置Contrains属性
      

  6.   


    procedure WMNChitTest(var Msg:TWMNChitTest); message WM_NCHITTEST; procedure TfrmAcqMonitor.WMNChitTest(var Msg: TWMNChitTest);
    begin
      if (Msg.Result = HTCAPTION) and (Msg.Result <> HTSYSMENU) and (Msg.Result <> HTCLOSE) then
        Msg.Result:=0;
    end;             
      

  7.   

    补充下:
    窗口设成bsSingleprocedure TfrmAcqMonitor.FormCreate(Sender: TObject);
    var
      hmMenu:HMENU;
      ms:string;
    begin
      hmMenu:=GetSystemMenu(Handle,False);
      SetLength(ms,11);
      GetMenuString(hmMenu,1,PChar(ms),10,MF_BYPOSITION);
      ms:=Trim(ms);
      ModifyMenu(hmMenu,1,MF_BYPOSITION or MF_GRAYED,0,PChar(ms));
      ......
    end;
      

  8.   

    把Form的BorderStyle属性设为bsSingle