Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Schriftfarben in Multiuser-Chat (https://www.delphipraxis.net/19276-schriftfarben-multiuser-chat.html)

Ultimator 31. Mär 2004 13:01


Schriftfarben in Multiuser-Chat
 
Ich hab eine Frage zu einem selbstgemachten Chat, und zwar: Wie kann ich ankommende Chat-Nachrichten in einer bestimmten Farbe anzeigen lassen, z.B. von User "Heinz" in grün, von User "Hans" in blau? Ich verwende einen Chat mit mehreren Clients und einem Server. Mein QT ist denke ich nicht nötig, oder? Wenn doch kann ich ihn ja später immer noch posten.

Evian 31. Mär 2004 16:25

Re: Schriftfarben in Multiuser-Chat
 
die Frage ist, wie und wo Du die Namen der Chatteilnehmer ausgibst... nutzt Du ein Memo, oder eine Listbox, oder was anderes?! Es lässt sich nähmlich recht schwierig erklären, wie man die Farbe der Chatteilnehmer verändert, wenn ´wir nicht wissen welche Komponente Du nutzt.

gruss

Evian

alcaeus 31. Mär 2004 16:29

Re: Schriftfarben in Multiuser-Chat
 
Am besten geht es mit einem RichEdit:

Delphi-Quellcode:
case Benutzer of
  0: RichEdit1.SelAttributes.Color := clBlack;
  1: RichEdit1.SelAttributes.Color := clBlue;
  2: RichEdit1.SelAttributes.Color := clRed;
  3: RichEdit1.SelAttributes.Color := clGreen;
end;
RichEdit1.Lines.Add(ErhaltenerText);
Von mir aus gesehen sehr einfach

Ultimator 1. Apr 2004 12:59

Re: Schriftfarben in Multiuser-Chat
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich meine, wie ich überprüfen kann, von wem die Nachrichten kommen und dann deren Nachrichten in einer bestimmten Farbe ausgeben.
z.b. Das Chatfenster ist im Anhang, um es besser nachzuvollziehen.

fkerber 1. Apr 2004 13:17

Re: Schriftfarben in Multiuser-Chat
 
Hi!

Du weißt doch, von wem die Nachrichten kommen, oder?
Du, oder dein Programm, schreiben es doch davor.

Und dann die Case-Abfrage, wie oben (geht aber glaub ich nicht mir Strings).

Ciao fkerber

alcaeus 1. Apr 2004 15:27

Re: Schriftfarben in Multiuser-Chat
 
Wenn du mit Server- und ClientSocket arbeitest, dann kannst du folgendes verwenden:

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  i: Integer;
begin
//Socket ist das Socket des aktuellen Clients
//ActiveConnections ist die Anzahl laufender Verbindungen
//Connections enthält alle Sockets der offenen Verbindungen
  for i := 1 to ServerSocket1.Socket.ActiveConnections do
  begin
//Wir gehen alle Sockets durch, falls wir das richtige gefunden haben, setzen wir die Farbe
    if Socket.Handle = ServerSocket1.Socket.Connections[i-1].Handle then
    begin
      RichEdit1.SelAttributes.Color := Farben[i];
      break;
    end;
  end;
end;
Falls du es so wie in deiner Grafik machen willst, musst du vorher noch nach bestimmten Kommandos überprüfen, und für die speziellen Meldungen (Angemeldet, Abgemeldet) andere Farben verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz