Hab ein kleines Problem beim proggen eines Chat Clients.
Mein Programm ist so aufgebaut, dass ich in einem array Daten über die einzelnen User speichere, unter anderem auch, ob bereits ein Chat Fenster für diesen User offen ist.
Wenn ich z.B. ein Fenster öffne, speicher ich das so ab:
Delphi-Quellcode:
User[i].Fenster := true;
User[i].Handle := FindWindow('#32770',PChar(User[i].Nick));
Wenn ich nun von selbigem User eine nachricht erhalte wird sie mir leider nicht angezeigt.
Die Procedure sieht wie folgt aus:
Delphi-Quellcode:
procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
var
Min1, zeit: String;
DateTime: TDateTime;
Hour, Min, Sec, Msec, i: Word;
begin
DateTime := now;
DecodeTime(DateTime, Hour, Min, Sec, Msec);
Min1 := IntToStr(Min);
if Length(Min1) = 1 then Min1 := '0' + Min1;
zeit := IntToStr(Hour)+':'+Min1;
for i := 1 to LastUser do
begin
if User[i].Nummer = StrToInt(UIN) then
begin
if User[i].Fenster = false then
begin
with TMessages.Create(nil) do
begin
Self.IconList.GetIcon(User[i].Status, Image1.Picture.Icon);
Self.AdvIconList.GetIcon(0, Icon);
Caption := User[i].Nick;
Nummer.Text := UIN;
Nick.Text := User[i].Nick;
Text.Font.Color := clred;
Text.Font.Size := 10;
Text.Lines.Add(User[i].Nick+' ('+zeit+'):');
Text.Font.Color := clblack;
Text.Font.Size := 8;
Text.Lines.Add(Msg);
Show;
User[i].Fenster := true;
User[i].Handle := FindWindow('#32770',PChar(User[i].Nick));
end;
end
else
begin
with TForm(Pointer(User[i].Handle)) as TMessages do
begin
Text.Font.Color := clred;
Text.Font.Size := 10;
Text.Lines.Add(User[i].Nick+' ('+zeit+'):');
Text.Font.Color := clblack;
Text.Font.Size := 8;
Text.Lines.Add(Msg);
Show;
end;
end;
Sound.FileName := ProgDir+'\Message.wav';
Sound.Open;
Sound.Play;
break;
end;
end;
end;
Da ich die Nachrichten aber nur nicht bekomme, wenn das Fenster schon offen ist, muss der Fehler im unteren Teil nach dem else sein.
Kann mir jemand sagen, was da falsch ist?