在窗口不是最大化的时候怎么样设置,让用户无法移动窗口

解决方案 »

  1.   

    Form1.BorderStyle.bsSingle改为
    Form1.BorderStyle := bsSingle
      

  2.   

    To: maozefa(之源)
    好象你的方法不行,没道理呀
      

  3.   

    我很菜,看了我的代码不要笑,多提意见
    1:禁止鼠标拖动标题栏
    在private部分加入
    procedure WMNCLBUTTONDOWN(var msg:TMessage);message WM_NCLBUTTONDOWN;
    在实现部分加入:
    procedure TForm1.WMNCLBUTTONDOWN(var msg: TMessage);
    begin
      if msg.WParam= HTCAPTION  then
        SendMessage(self.Handle,WM_LBUTTONUP,0,0)
      else
        inherited;
    end;
    2:把"移动"从控制菜单移除(代码我不会写)谁来补上
      

  4.   

    Val函数Code:integer;
    i:integer;//Or other typeVal(YourInputString,i,Code);如果返回 Code=0,是数值,i 即为结果数值。
      

  5.   

    学习了一下,上面说的第二条,在FormCreate中加入
    DeleteMenu( GetSystemMenu(Handle, False),SC_MOVE,MF_BYCOMMAND);
    就行了,
      

  6.   

    通过WM_WINDOWPOSCHANGING消息判断
      

  7.   

    To:glassesboy(glassesboy)把代码贴出来让我学学,谢谢,,,,
      

  8.   

    private
        { Private declarations }
        procedure WMNCHitTest(var msg: TWMNCHitTest);message wm_nchittest;procedure TForm1.WMNCHitTest(var msg: TWMNCHitTest);
    begin
      if msg.Result = htcaption then
        msg.Result := htClient;end;
      

  9.   

    我认为 glassesboy的方法好
    naughtyboy的方法会使标题栏不可用
      

  10.   

    naughtyboy(一切都是为了明天) ( ) 就这个了。
      

  11.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
      hSysMenu: HMENU;
    begin
      hSysMenu := GetSystemMenu(Handle, False);
      //禁止用户移动窗体
      DeleteMenu(hSysMenu, SC_MOVE, MF_BYCOMMAND);
      //...
    end;//友情赠送以下代码 :)procedure TForm1.FormCreate(Sender: TObject);
    var
      hSysMenu: HMENU;
    begin
      //禁止用户关闭窗体
      DeleteMenu(hSysMenu, SC_CLOSE, MF_BYCOMMAND);
      //删除系统菜单中的分栏符
      DeleteMenu(hSysMenu, 0, MF_BYCOMMAND);
      //禁止用户改变窗体大小
      DeleteMenu(hSysMenu, SC_SIZE, MF_BYCOMMAND);
      //禁止用户最小化窗体(最小化按钮并非变灰)
      DeleteMenu(hSysMenu, SC_MINIMIZE, MF_BYCOMMAND);
      //禁止用户最大化窗体(最大化按钮并非变灰)
      DeleteMenu(hSysMenu, SC_MAXIMIZE, MF_BYCOMMAND);
      //禁止用户恢复窗体大小(恢复并非变灰)
      DeleteMenu(hSysMenu, SC_RESTORE, MF_BYCOMMAND);  
    end;//要想恢复默认系统菜单,使用
    GetSystemMenu(Handle, True)