公共函数:
function ExecuteForm(AFormClass: TFormClass): Boolean;
begin
  Screen.Cursor:= crHourGlass;
  with AFormClass.Create(Application) do
  begin
    Screen.Cursor:= crDefault;
    if ShowModal = mrOK then
      Result := True
    else
      Result := False;
    Free;
  end;
end;调用:
ExecuteForm(TCompanyForm);现在的问题是,在CompanyForm中,当    if Trim(Edit1.txt)='' then
    begin
        ShowMessage('请输入名称.');
        Edit1.SetFocus;
        abort;
    end;
时,窗口就自动关闭了。。
-------------------------------------------------除了主窗体MainForm外,其它窗体都是点击后再加载的。。请问,这是什么原因?如何改?

解决方案 »

  1.   

    function ExecuteForm(AFormClass: TFormClass): Boolean;
    begin
      Screen.Cursor:= crHourGlass;
      with AFormClass.Create(Application) do
      begin
        Screen.Cursor:= crDefault;
        if ShowModal = mrOK then
          Result := True
        else
          Result := False;
        Free;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ExecuteForm(TForm2);
    end;----------------------------
    procedure TForm2.Button1Click(Sender: TObject);
    begin
        if Trim(Edit1.Text)='' then
        begin
            ShowMessage('请输入名称.');
            Edit1.SetFocus;
            abort;
        end;
    end;没你说的这问题!
      

  2.   

    回楼上,确实很奇怪。以前偶是手写生成FORM的,用ShowMadal方法时,有的窗口就会关闭,有的又不会。。没办法,偶只好在会关闭的窗口中,生成用SHOW方法。。就没这样了。。好奇怪不知是啥原因?是不是偶窗体太多?
      

  3.   

    为什么用abort?会产生一个exception,看看exception相关处理里是不是退出了?
      

  4.   

    回楼上,不用Abort,那请问有那个好?