我在主界面上设了退出按钮,只想按这个钮退出,
怎样让窗口右上角的关闭按钮失去作用?
另:怎样让弹出的窗口无法移动,但窗口内还可正常操作

解决方案 »

  1.   

    form1.BorderIcons设置为bisystemmemu的属性为false;
    或者用
    form1.BorderIcons:=BorderIcons - [biMaximize]-[biminimize];
      

  2.   

    重新定义Wm_SysCommand消息,如下:procedure TForm1.WmSysCommand(var Msg:TMessage);message WM_SYSCOMMAND;
    begin
      if Msg.WParam<>SC_CLOSE then
        Inherited;
    end;
      

  3.   

    form1.BorderStyle属性设置为bsNone
      

  4.   

    close()
    canclose:=false;
    不知道是不是这样
      

  5.   

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action := caNone;
    end;
      

  6.   

    办法一:
      exitclicked: Boolean = False;implementation{$R *.DFM}procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if not exitclicked then
        Action := caNone;
    end;procedure TForm1.btnExitClick(Sender: TObject);
    begin
      exitclicked := True;
      Close();
    end;办法二:
    Form1.BorderIcons := [];
      

  7.   

    大家可能有点误会了,我的意思是只让窗口右上角的关闭按钮失去作用(即可以看见,但不能操作,就像被enabled=false一样),最大化按钮不能用,我已经通过设置borderIcons下的bimaximize=false实现了,最小化按钮还可以用。
    我试了大家的方法都是让最小化、最大化、关闭按钮消失,这不符合要求另:怎样让弹出的窗口无法移动,但窗口内还可正常操作
      

  8.   

    那只能截获系统的消息了NCCLICK和SC_CLOSE 确切的我记不清了,大概是这个样子,自定义了事件处理函数,就能屏蔽他们
      

  9.   

    楼主,我那个重新定义消息的方法已经给了你很明确的答案了,那样做不会让关闭按钮消失,却可以让它在被按下后不起作用!让窗口无法移动方法很多,当然也可以使用消息,如下:procedure TForm1.WmNcHitTest(var Msg:TMessage);message WM_NCHITTEST;
    begin
      Inherited;
      if Msg.Result=htCaption then
        Msg.Result:=htClient;
    end;
      

  10.   

    搂住没有试过 fs 的方法把 procedure TForm1.WmSysCommand(var Msg:TMessage);message WM_SYSCOMMAND;
    begin
      if Msg.WParam<>SC_CLOSE then
        //Inherited;注意这一句 如果添加系统会调用原先的功能 如果不添加 就取消系统的关闭功能
    end;把分给 fs 吧
      

  11.   

    另:怎样让弹出的窗口无法移动,但窗口内还可正常操作弹出窗体用showmodal,不用show