[Ayuda] Cambiar Color De Palabra En RichTextBox Y Que Se Envie Por Winsock

Iniciado por Brian1511, 10 Febrero 2015, 20:30 PM

0 Miembros y 1 Visitante están viendo este tema.

Brian1511

Hola a todos bueno mi duda es muy simple, lo que quiero hacer es que se cambie el color del usuario que envio el mensaje al servidor, el servidor busca que rango es este, cada rango tiene un color, pero no se como hacer que solo se cambie el user y no todo el texto y que de paso me lo envie por winsock ya que recibo el codigo RTF  del RichTextBox



Creador de BrainMind

MCKSys Argentina

Te refieres a cambiar el color del user usando el control RTF de VB o editar el codigo RTF para cambiar el color del user?

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Brian1511

Lo que quiero es que al servidor recibir los datos, si el usuario que envio el mensaje es digamos de rango 1 pues el color de su user sera de color Gris pero si es 2 seria de color rojo y haci sucesivamente, entonces quiero que el servidor envie a todos los chats el color del usuario mas su mensaje, ejemplo:

brian1511 : Este es mi mensaje!!

Gracias por responder tan rapido ;)



Creador de BrainMind

MCKSys Argentina

Entiendo lo que quieres, pero no me queda claro cómo lo quieres hacer.

De todas formas, para hacerlo sencillo, podrías generar el código RTF sólo para el texto que envías.
Siguiendo tu ejemplo, el color del texto es negro y el del usuario seria rojo (ojo, texto rojo, no backcolor).
El codigo RTF seria:

{\rtf1\ansi{\colortbl;\red0\green0\blue0;\red255\green0\blue0;}
\cf1 brian1511\cf0 : Este es mi mensaje!!\par
}


En RTF primero defines los colores que se usarán en el texto con una tabla. Fíjate que definí 2 colores: negro y rojo (RGB: 0x000000 y 0xFF0000).
Luego, en el texto, antepones \cfX, donde X es el índice del color a usar para pintar el texto. En el ejemplo \cf1 dice que lo que sigue se pintará usando el color 1 de la tabla de colores. Con \cf0 se sigue pintando usando el color en el indice 0.

Como dato extra, para resaltar (backcolor) debes usar lo mismo, pero con el keyword "\highlight". Entonces, \highlight0 resaltaría con fondo negro, \highlight1 con rojo, y así sucesivamente.

Espero sea lo que quieres.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Brian1511

Bueno eso es lo que se me envia a los 2 chats el del Servidor y al del Cliente un codigo parecido a ese!,

Este es el codigo que ise para hacer lo de los colores pero no me funciona:

[spoiler]
Código (vb) [Seleccionar]

Public Sub Global_Chat(Level As String, User As String, Msg As String)
Dim Color As Long
Dim Text As String

Select Case Level

Case "0":
Color = RGB(0, 0, 0)
Case "1":
Color = RGB(128, 128, 128)
Case "2":
Color = RGB(30, 144, 255)
Case "3":
Color = RGB(255, 69, 0)
Case "4":
Color = RGB(0, 128, 0)
Case "5":
Color = RGB(255, 255, 0)
End Select

frmServer.txtRTF.Text = User & " : " & Msg

With frmServer.txtRTF
    'Selecciona todo
    .SelStart = .Find(User)
    .SelLength = Len(User)
    .SelColor = Color
    .Font.Bold = True
End With

frmServer.txtChat.TextRTF = frmServer.txtChat.TextRTF & frmServer.txtRTF.TextRTF & vbNewLine

For i% = 1 To frmServer.Winsock1().UBound
        Select Case frmServer.Winsock1(i%).State
            Case Is = sckConnected
                frmServer.Winsock1(i%).SendData "GCHAT||" & frmServer.txtChat.TextRTF
                DoEvents%
            Case Else
        End Select
    Next i%

End Sub

[/spoiler]

Y lo que resivo es un codigo del color que se supone que deberia de ir solo el user y el mensaje :(



Creador de BrainMind