TForm.Create(Application) //这样才找到TForm.Create(nil) //这样就找不到

解决方案 »

  1.   

    可能和你创建form时的owner有关
      

  2.   

    var
      I: Integer;
    begin
      for I := 0 to Screen.FormCount - 1 do
        ShowMessage(Screen.Forms[I].Caption);
    end;
      

  3.   


    应该用screen去找明白不var
      i:integer;
    begin
      for i:=0 to screen.FormCount-1 do
        screen.Forms[i] ......
      

  4.   

    不会吧,我创建这样一个工程,包括4个form和一个button,button在form1(主窗体)上,
    然后加入procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(IntToStr(Application.ComponentCount));
    end;执行后显示为5,这就说明Application.ComponentCount可以获得所有控件的数目了改写button的事件:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i : integer;
    begin
      For I := 0 To Application.ComponentCount - 1 do
      begin
        ShowMessage(Application.Components[I].ClassName);
      end;
    end;显示分别是:
    THintWindow,TForm1,TForm2,TForm3,TForm4再改写:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i : integer;
    begin
      For I := 0 To Application.ComponentCount - 1 do
      begin
        ShowMessage(Application.Components[I].name);
      end;
    end;显示:
    空,Form1,Form2,Form3,Form4
    如果用form1的button调用form2,然后在form2中加入button,并加入如上的事件,结果证明仍是正确的请问我的理解和你的是否不同呢
      

  5.   

    哈哈我明白了楼主的意思肯定是指已经建立,但确是动态创建的FORM吧没什么好办法,只好等待高人的出现
      

  6.   

    我创建窗体是这样的
     Form2 := TForm2.Create(self);
     Form2.ShowModal;
     Form2.Free;
    居然找不到
      

  7.   

    不用说了,我的还出现过Form1.width说什么Width没有声明过,,,,,,,
      

  8.   

    to  qiubolecn(来自差生市)
    用for i := 0 to Screen.FormCount - 1 do
      begin
      ...
      end
    来循环,循环的先后顺序是不是按照Form创建的先后顺序进行的。
    即最后创建的窗体先循环