Einzelnen Beitrag anzeigen

-=IOI=-

Registriert seit: 5. Mär 2005
54 Beiträge
 
#1

Problem beim Fenster finden!

  Alt 11. Jul 2005, 21:59
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
  Mit Zitat antworten Zitat