Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#3

Re: Mehrere Fenster, gleiche Klasse,auf best. Memo zugreifen

  Alt 8. Mai 2005, 01:26
Die UIN sollte ja eindeutig sein.
Eine möglichst einfache Lösung wäre dann wohl eine Art Factory, die dir anhand der UIN eine Instanz einer "ChatSession" liefert.
Ist die UIN noch nicht in der Liste würde eine neue Instanz erstellt und zurückgegeben werden. Welche sich in dem Moment gleich den Nick von ICQ holen kann.

Dürfte also eigentlich gar nicht schwer sein. Nur solltest du deinen Code-Style überdenken.
Was du da machst gehört zur grundlegenden Logik des Programmes. Da haben Formulare absolut nix zu suchen.
Man sieht es sehr deutlich an deiner Methode. Du hantierst dort mit einem ListView, seinen Items, einem Form und einem Memo auf dem Form rum. Außerdem bestzt du den Nick, obwohl das das Objekt selbst machen könnte.
Kein Wunder wenn du die Übersicht verlierst.

Es könnte, auf den Punkt gebracht, so aussehen:
Delphi-Quellcode:
Session := Sessions[UIN];
Session.Message.Add(Msg);
Session.Activate();
Sessions wäre deine "Factory" (@maximov ich weiß, dass es keine ist ).
Session ware deine Abbildung einer ICQ Session. Die Klasse würde intern das Formular verwalten.

Diese 2 (oder mehr) Klassen zu implementieren dürfte nichtmehr wirklich schwierig sein. auf der anderen Seite gewinnst du damit Modularität und Übersicht.
Ich meine, was interessiert die Klasse, die auf das Receive horcht, welche Caption das Nachrichtenfenster bekommen soll, welchen Nickname der Sender hat oder in welcher Farbe/Style der Nick auf ein RichEdit kommt.
Auch dieses RichEdit interessiert den "Horcher" überhaupt nicht.
  Mit Zitat antworten Zitat