Erstmal würde ich zum beispiel die ganzen Chatfenster in einem Dynamischen Array verwalten. Wenn du dann im Array einen record machst, kannst du auch noch weitere Daten zu einem Form speichern.
Zum Beispiel:
Delphi-Quellcode:
type
TChatWindowInfo = record
Form: TForm;
User: String;
end;
ChatWindows : Array of TChatWindowInfo;
Jetzt musst du nur noch vernünftig das Array pflegen, heisst beim erstellen eines Fensters da eintragen und beim Schliessen eines Fenster dort wieder rausschmeissen.