如题,原因是我在此接钮处判断用户输入的是否正常,如果用户输入的不合适要求,就提示用户输入有误,并保持窗口打开状态。

解决方案 »

  1.   

    在窗体内增加一个
    var
      bValidate: boolean;//私有变量按钮事件触发时
    if bValidate <> true then
      ModalResult := mrNone;
      

  2.   

    觉得设置为mrNone的比较好。
    在确定按钮里,所有的判断都通过了再设置为mrOK。
      

  3.   

    试试在该窗口的OnCloseQuery里写判断,不合条件就
    CanClose:=False;
      

  4.   

    >>如果设置成了mrOk
    不要设置成 mrOK而是在代码中自己设置,大概如下:if checkOk then
     result := mrOK;
      

  5.   

    同意aiirii,
    不要设按钮的ModalResult 
    而是在代码中写,这样代码可读性好一些,
    控制也方便一些。
      

  6.   

    同意 g961681(技术庸人(清净世界))  的方法,不过可能还需要设置一个全局变量作为判断的var  FormcanClose:boolean;在OnCloseQuery中判断
    CanClose:=FormcanClose;至于FormcanClose是为True或者False就看你自己的意愿了。
      

  7.   

    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm2 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}
    var
      formCanClose:boolean;procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      CanClose:=formCanClose;
    end;procedure TForm2.Button2Click(Sender: TObject);
    begin
      formCanClose:=true;
    end;procedure TForm2.Button1Click(Sender: TObject);
    begin
     formCanClose:=false;
    end;end.
    button1和button2的ModalResult都是mrok。。但Button1Click不会关闭窗口,而Button2Click则会关闭窗口。。就代表了条件成功与否。。你可以看看你的软件中如何来写这个条件。。
      

  8.   

    直接设置成none
    在这个按钮的CLIKC事件中,动态的设成mrok.