var
i:integer;
fclass:Tformclass;
begin   
   for i:=0 to screen.FormCount-1 do
   begin
     if screen.Forms[i].Caption='form3' then
     begin
       if screen.Forms[i]=nil then
       begin
         tform(fclass):=screen.Forms[i].Create(application);
         //application.CreateForm(screen.Forms[i],class);
          tform(fclass).Parent:=panel2;
          screen.Assign(tform(fclass));
          tform(fclass).Show;           
       end;
     end;
   end;
end;
创建的窗体不能显示!!那里错了!?

解决方案 »

  1.   

    if   screen.Forms[i]=nil   then 
    这个条件不成立,所以你的if.. then块的代码根本就没有执行。PS:假设这个条件成立,那么程序就会报错,因为你在这个判断之前有“ if   screen.Forms[i].Caption= 'form3 '   then 
    ”与你的判断条件“ if   screen.Forms[i]=nil   then ”矛盾。
      

  2.   

    你这逻辑有问题啊,既然是screen.Forms,那么所有的Form都是存在的,根本不用判断screen.Forms[i]=nil;
      

  3.   

    如何判定screen.Forms[i]是否为打开或关闭呢?
      

  4.   

    if Screen.Forms[i].Active then begin
    ........
    end;
      

  5.   

    if screen.Forms[i] <> nil then
      

  6.   

    if   screen.Forms[i]   <>   nil   then
    逻辑没理顺,是不是初学者?
      

  7.   

    楼主多看看书吧!推荐书籍:
    《VCL架构剖析》 
    《delphi源代码分析》 
    《delphi面向对象编程思想》 
    《delphi设计模式》 
    《master delphi7》 
    《delphi_threads》 
    最好是在盒子上(www.2ccc.com)多下几个例子,自己练练手
      

  8.   

    我一般用的是。Application.CreateForm()
      

  9.   

    楼主多看看书吧!推荐书籍: 
    《VCL架构剖析》   
    《delphi源代码分析》   
    《delphi面向对象编程思想》   
    《delphi设计模式》   
    《master   delphi7》   
    《delphi_threads》   
    最好是在盒子上(www.2ccc.com)多下几个例子,自己练练手Bear_hx 说得没错,先看这几本书吧,还有Delphi5、6开发人员指南,这两本书也不错的。
      

  10.   

    应该这样写:      var 
          i:integer; 
          fclass:Tformclass; 
          begin  
           if not assinged(form3) then 
              begin 
                 tform(fclass):=screen.Forms[i].Create(application); 
                 //application.CreateForm(screen.Forms[i],class); 
                 tform(fclass).Parent:=panel2; 
                 screen.Assign(tform(fclass)); 
                 tform(fclass).Show;                       
              end; 
          end;