在公用global.pas中有个公用的过程,用来建立一个新窗口
procedure G_OpenNew();
begin
Form1:=Tform1.Create(nil);
try
 form1.ShowModal;
finally
 form1.Free;
 form1:=nil;
end;
end;//在建立N个Form1后请问如何识别它们,也就是说我想给其中的某个form1赋值?
//同时我发觉关闭其中一个后,其它的form1都可能已经释放了,如果再访问其它的form1就出现地址错误。。请问如何建立多个同名的form并且分别识别他们?

解决方案 »

  1.   

    for i:=0 to Screen.FormCount-1 do
      ListBox1.Items.Add(Screen.Forms[i].Name);
      //把所有窗体给加加进去.
      

  2.   

    为什么建不出来。。我在form1上就调用这个过程
      

  3.   

    或者你的这些窗体实现不同的功能,这样你在创建的时候可以赋予他们不同的from1.caption
      

  4.   

    当然建的出来了
    procedure G_OpenNew();
    var
      form1:Tform1;
    begin
    Form1:=Tform1.Create(nil);
    try
     form1.ShowModal;
    finally
     form1.Free;
     form1:=nil;
    end;
    end;
      

  5.   

    不信加个timer调用试试 呵呵
      

  6.   

    建是肯定能建出来的,不过你的form1不应该是全局变量。
    for i:=0 to Screen.FormCount-1 do
      ListBox1.Items.Add(Screen.Forms[i].Name);
    可以遍历窗口,但不是太好。
    最好使用一个TList类来维护窗口列表。