新建一个窗体form2,在这个窗体上加一个edti1控件,和一个button1控件.
设置button1的ModalResult := mrOK.当我把form2.ShowModal后, 我想判断edit1里的字符串是不是'1',如果不是
则edit1.SetFocus,继续输入,直到输入'1'才关闭窗口,应该要怎样实现,
我想了,很久,都不知道怎样做,谁帮一下忙?

解决方案 »

  1.   

    说得简单一点,就是把一个窗口ShowModal以后,单击它上面的Button1控件(Button1的
    ModalResult属性为mrOK).  这个窗口不关闭?
      

  2.   

    procedure TForm2.Button1Click(Sender: TObject);
    begin
      if form2.Edit1.Text='1' then
        form2.Close
      else
        form2.Edit1.SetFocus;
    end;
      

  3.   

    procedure TForm1.FormShow(Sender: TObject);
    begin
    if edit1.Text='1' then
    close
    else
    edit1.SetFocus;
    end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if key='1' then
    close
    else
    edit1.Text:='';
    key:=#0;
    end;
      

  4.   

    那这样好了:将Button1的ModalResult设置为mrNone,如果edit1里的字符串是'1',再设置为mrOK,关闭Form
      

  5.   

    baguli(巴古里) 就是想要ModalResult属性.if Form2.ShowModal = mrOK then
    begin
      ......
      //在此做一些事情,不过,我必须要求Form2.edit1 = '1',才执行这些代码,
      //否则在Form2里重复输入edit1.   不知道怎样做到??
    end;
      

  6.   

    这个问题我已经解决..   :)//form2窗口中加语句如下:
    procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin    
      if edit1.Text <> '1' then
        CanClose := false
    end;//form1中的语句
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if form2.ShowModal = mrOK then
      begin
        showMessage('after ShowModal and edit1.text = ''1'', form2 closed!');
      end;
    end;