if not Assigned(form1) then
  form1:=TForm1.Create(self);

解决方案 »

  1.   

    if assinged(form1) then
       form1:=Tform1.create(application)
       else
        begin
         application.messagebox('','',...);
         exit;
        end;
      

  2.   

    if assinged(form1)  then 表示已创建
    即判断form1的地址值是否为nil
      

  3.   

    建立2个全局数组变量(收容窗体的类名和指针),一旦创建窗体之后,把类名和指针分别存入。要判断是否已经创建,就在数组中比较是否存在即可。创建时:
      for i :=0 to MaxForm do  //MaxForm 是控制创建窗体的数量
        if PFormPoint[i] = nil then
        begin
          PClassName[i] := frmForm.className;// string;
          PFormPoint[i] := frmForm;  // Tcomplement;
        end;判断时:
        for i :=0 to MaxForm do  //MaxForm 是控制创建窗体的数量
        begin
          if PClassName[i] = **className then
            with PFormPoint[i] as TForm  do
            begin
              close;/show;/...
            end;
        end;