请问如何避免用户不对弹出窗体作正确操作(例如弹出窗体要求选择性别,两个单选按钮)而按"X'将该窗体关闭?

解决方案 »

  1.   

    在窗体的ONCloseQuery事件中处理
    procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if 不满足条件 then
      begin
        CanClose:= False;
        Exit; 
      end;
    end;
      

  2.   

    当然有办法。自己做对话框,调用呗,何必用windows自带的?不过请合理解释一下你这句话:“请问如何避免用户不对弹出窗体作正确操作(例如弹出窗体要求选择性别,两个单选按钮)而按"X'将该窗体关闭?”不对正确操作,是不是作错误操作?
      

  3.   

    定义窗体上的两个按钮的属性modalResult
    确定按钮为mrOK
    取消按钮为mrCancel
    调用该窗体时var
      form:TselectForm;
    begin
      form := TselectForm.create(nil);
      try
         if form.showmodal()=mrok then
         begin
             //做你要做的事情;
         end else
         begin
             //....
         end;
      finally
         form.free;
      end;
    end;
    这样跟用户按不按上面的叉没有关系;
      

  4.   

    设置窗体bordericons属性相应支设为false
    这样不能屏蔽ait+f4要彻底断绝用户输入就拦截关闭信息 
      

  5.   

    你是怕关了之后怎么样;不要问问题在中间问,上不着天,下不着地;
    如果你遇到了这样的问题:
    1、
    如果用户在弹出窗体上,没有选定你让他选的按钮,而按了“X”关闭的,而你恰恰把代码写在了Close事件里,影响了你的程序逻辑;你该怎么办,
    2、
    还是你遇到了一个问题,而不去分析是不是你的代码逻辑问题,只是一味的想通过屏蔽“X”来使你的代码逻辑合理,这样是不对的,你应该从你的程序着手,而不是遇到了一个问题,就解决这个问题,应该在退一步,从再大一点的方向上看,看看是什么使你遇到了这样的问题,而别人就没有遇到,或者别人是怎么绕开这样的问题的;
      

  6.   

    使用下面的方法就能使窗体关闭按钮变灰:
    EnableMenuItem(GetSystemMenu(Handle,False),SC_CLOSE,1);
      

  7.   

    同意 jan2002(阿吉) 在窗体的ONCloseQuery事件中处理
    procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if 不满足条件 then
      begin
        CanClose:= False;
        Exit; 
      end;
    end;就算ait+f4也不能关闭窗口!