何必用数组呢,用TLIST不好吗?
点击事件生成新窗口:Var
  WinList:TList;procedure TMainForm.FormCreate(Sender :TObject);
Begin
  WInList :=TList.Create;
end;
procedure TMainForm.Destry(Sender:TObject);
Var
  Count:Integer;
Begin
  for Count :=0 to WinList.Count -1 do
    TFrmChat(WinList.Items[Count]).Close;  //关闭所有创建窗口
  WinList.Free;//释放List
end;//新建
procedure NewICQWindow(Const ICQNumber:String);
Var
  NewWindow:TfrmChat;
begin
  NewWindow :=TfrmChat.Create(Application);
  NewWindow.Caption :=ICQNumber;  //ICQNumber应为唯一值
  WinList.Add(NewWinow);
  NewWindow.Show;
end;
procedure DeleteWindow(Const ICQNumber:String);
Var
  Count:Integer;
Begin
  for Count :=0 to WinList.Count -1 do
  Begin
    if TFrmChat(WinList.Items[Count]).Caption =ICQNumber then
    Begin
      TFrmChat(WinList.Items[Count]).Free;//释放指定窗口
      WinList.Delete(Count);//删除列表中的值
    end;
  end;
end;每个frmChat窗口最好有独立的ClientSocket,独立建 立 通信
frmChatClose事件发生时加入DeleteWindow(Caption);//当前窗口ICQNumber号码

解决方案 »

  1.   

    1,不要用CreateNew,应是:
      myform[i]:=TFormchat.create(nil);
    2.你可在TFORMCHAT中设置一些参数和方法
       在myform[i]:=TFormchat.create(nil);
           :
          MYFORM[i].SHOW;
         之间进行调用来实现双方对话建立.
     窗体关闭会激发OnClose事件.
           
      
      

  2.   

    alin  好快,
      它有TLIST在处理窗体列表时是十分合适的,建立采纳.
      

  3.   

    谢谢alin,还有seul.
    你们都是高手,很希望和你们成为朋友。
    很希望在以后的学习中获得你们的帮助。
    与我联系:Email:[email protected] OICQ:7760126