这是现在的“弹出窗体”的代码:
procedure TShow1Form.Button1Click(Sender: TObject);
begin
  TestForm := TTestForm.Create(Application);
  TestForm.Show;
end;1.如何实现,弹出的窗体,用户无法移动?
2.弹出子窗体后,如果没有关闭的话,主窗体不能进行任何操作。

解决方案 »

  1.   

    提供一个方法,不过还不如用bsNone窗体procedure TForm1.FormCreate(Sender: TObject);
    var
      _Menu:HMENU;
    begin
      BorderIcons:=BorderIcons-[biMaximize];  _Menu:=GetSystemMenu(Handle,False);
      DeleteMenu(_Menu,SC_Move,MF_BYCOMMAND);
      DeleteMenu(_Menu,SC_Size,MF_BYCOMMAND);
    end;
      

  2.   

    TTestForm=class(TForm)
              protected
                procedure WndProc(Msg:TMessage);override;
              //.....
              end;
    implementation
     
    procedure TTestForm.WndProc(Msg:TMessage);
    begin
      if Msg.Message=WM_MOVE then exit;
      inherited;
    end;
      

  3.   

    bsNone窗体,考虑过,但是,就得写个button之类的关闭窗体了
      

  4.   

    像9楼,屏蔽掉WM_MOVE消息。。
    注意:一定要inherited;!!!!!!!!!!