例如有个OnExit方法:
procedure TfrmAddUser.Edit2Exit(Sender: TObject);
begin
  if (Length(Edit2.Text)<5) or (Length(Edit2.Text)>10) then
  begin
    MessageBox(handle,'您刚输入的密码不在5-10位之间!请重试','提示',MB_ICONWARNING);
    Edit2.SetFocus;
  end;
end;
窗体上另有个“取消”按钮来取消操作,并关闭窗体。可如果焦点在Edit2中时,点击“取消”按钮则会执行不了取消和关闭窗体动作,只是响应Edit2Exit方法。怎么办呢?

解决方案 »

  1.   

    最好把判断代码写到你的确定事件里面去。
    写在Edit的exit事件里,
    只要焦点一离开,就会进行判断
      

  2.   

    还有
    他不是不响应你的“取消”按钮的事件,而是你的
    edit的<5或者>10
    如果不是
    肯定会执行“取消”按钮的事件!
      

  3.   

    这样做:procedure TForm1.Button2Click(Sender: TObject);
    begin
      Close;
    end;procedure TForm1.Edit2Exit(Sender: TObject);
    begin
      if Self.ActiveControl = Button2 then exit;   //加个判断就行了
      if (Length(Edit2.Text)<5) or (Length(Edit2.Text)>10) then
      begin
        MessageBox(handle,'您刚输入的密码不在5-10位之间!请重试','提示',MB_ICONWARNING);
        Edit2.SetFocus;
      end;
    end;