Hallo alle zusammen.
Bin gerade dabei ein ICQ-Clone zu proggen und bin nun auf folgendes Problem gestoßen:
Mit folgender Prozedur öffne ich ein neues Nachrichtenfenster, wenn ich eine Nachricht erhalte:
Delphi-Quellcode:
procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
var
i: Integer;
ListItem: TListItem;
FNick, min1: String;
DateTime: TDateTime;
Hour, Min, Sec, Msec: Word;
begin
DateTime := now;
DecodeTime(DateTime, Hour, Min, Sec, Msec);
Min1 := IntToStr(Min);
if Length(Min1) = 1 then Min1 := '0' + Min1;
with TMessage.Create(nil) do
begin
FNick := UIN;
if ListView1.Items.Count > 0 then
for i := 0 to ListView1.Items.Count - 1 do
if ListView1.Items.Item[i].Caption = UIN then
begin
ListItem := ListView1.Items.Item[i];
Self.IconList.GetIcon(StrToInt(ListItem.SubItems[LV_INDEX_STATUS]), Image1.Picture.Icon);
end;
Self.AdvIconList.GetIcon(0, Self.Icon);
if ListView1.Items.Count > 0 then
for i := 0 to ListView1.Items.Count - 1 do
if ListView1.Items.Item[i].Caption = UIN then
begin
ListItem := ListView1.Items.Item[i];
FNick := ListItem.SubItems[LV_INDEX_NICK]; //Nick
Break;
end;
Caption := FNick;
Nick.Text := FNick;
Nummer.Text := UIN;
Text.Font.Color := clred;
Text.Font.Size := 10;
Text.Lines.Add(FNick+' ('+IntToStr(Hour)+':'+min1+'):');
Text.Font.Color := clblack;
Text.Font.Size := 8;
Text.Lines.Add(Msg);
Text.Lines.Add('');
Show;
end;
end;
Nun kommt es ja aber nicht selten vor, dass man von einem User bereits eine Nachricht erhalten hat und somit schon ein Fenster offen ist.
Wie kann ich nun also herausfinden, ob von dem User schon ein Fenster offen ist (gebe jedem Fenster den Nickname des Users als Titel)? Und falls ja, wie kann ich dann eine neu erhaltene Nachricht an das Memo mit dem Namen Text des geöffneten Fenster weiterleiten (die Nachricht liegt in einer variablen vom Typ String).
PS: Jedes Fenster hat 2 Memo-Felder, müsste also irgendwie über den Namen laufen.
Gruß Flo