当一个事件发生时,程序会执行form3.show,但是如果此事件连续发生,就会弹出很多个form3,如何判断发现form3已经显示,不需再重新显示一个新的?

解决方案 »

  1.   

    你不会是先Create然后再Show的吧,如果是的话,就不用先Create了,先判断是否已经Create,如果已经Create了,就直接Show,这样的话,就只有一个了三。
      

  2.   

    首先将form3置为nil
    每次打开form3时先create
    以后每次都判断form3是否为nil如不是则exit
    在form3的destroy 事件中将form3在至为nil
      

  3.   

    // 试试 :if Not Assigned(Form3) then 
    begin  
      Application.CreateForm(TForm3,Form3) ;
      Form3.Show ;
    end ;
      

  4.   

    在弹出出FORM3前用findwindow看看是否已经有FORM3
      

  5.   

    if form1=nil then 
    begin
      form1=tform1.create(self);
      form1.show;
    end;记住关闭窗体时,释放form1,给分把
      

  6.   

    首先说一下,我的form3已经存在,不是新建.我用
    if Not Assigned(Form3) then 
    begin  
      Application.CreateForm(TForm3,Form3) ;
      Form3.Show ;
    end ;
    第一次运行可以,不过第二次由于form3已经加载了,所以Assigned(Form3)总为true了,无法再跳出form3,是不是应该在form3关闭事件中加入卸载它,或者什么别的?
      

  7.   

    if not Form2.Visible then
     Form2.Show;
      

  8.   

    if Not Assigned(Form3) then 
    begin  
      Application.CreateForm(TForm3,Form3) ;
      if not Form3.Visible then
        Form3.Show ;
    end ;
      

  9.   

    if Not Assigned(Form3) then 
    begin  
      Application.CreateForm(TForm3,Form3) ;
      if not Form3.Visible then
        Form3.Show ;
    end ;
      

  10.   

    // 加载 :
     
    if Not Assigned(Form3) then 
    begin  
      Application.CreateForm(TForm3,Form3) ;
      Form3.Show ;
    end ;// 关闭 :Form3.Free ;
    Form3 := Nil ;
      

  11.   

    if Not Assigned(Form3) then 
    begin  
      Application.CreateForm(TForm3,Form3) ;
      Form3.Show ;
    end ;
    或者用formshowmodal来试试
      

  12.   

    if Not Assigned(Form3) then 
    begin  
      Application.CreateForm(TForm3,Form3) ;
      Form3.Show ;
    end ;
      

  13.   

    呵呵,放一个TStrings记录所有打开的窗口。关闭一个窗口时,就将这个数组减一个元素
      

  14.   

    if Not Assigned(Form3) then 
    begin  
      Application.CreateForm(TForm3,Form3) ;
      if not Form3.Visible then
        Form3.Show ;
    end ;
    ,以上大家的方法都不错的,结贴吧!
      

  15.   

    if Not Assigned(Form3) then 
    begin  
      Application.CreateForm(TForm3,Form3) ;
      if not Form3.Visible then
        Form3.Show ;
    end ;
    关闭后:
    Form3.Free ;
    Form3 := Nil ;
    可以结贴了吧!