Colores en RichTextBox [Solucionado]

Iniciado por Stelio Kontos, 18 Marzo 2011, 22:23 PM

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

Stelio Kontos

No, sólo tiene la propiedad text, pero estoy seguro de que se puede, ví hace poco una aplicación similar a la que quiero desarrollar hecha en VB6, la pena es que no era de código abierto :(

TGa.

adecualo a tu codigo :D

Código (vb) [Seleccionar]
Private Sub Form_Load()
    Dim pos As Long
   
    RichTextBox1.Text = "Sergio dice: Hola" & vbCrLf & _
                        "Sergio dice: Hola" & vbCrLf & _
                        "Sergio dice: Hola" & vbCrLf & _
                        "Sergio dice: Hola"
   
    pos = 1
   
    Do While InStr(pos, RichTextBox1.Text, ":") <> 0
        RichTextBox1.SelStart = InStr(pos, RichTextBox1.Text, ":") + 1
        RichTextBox1.SelLength = 4
        RichTextBox1.SelBold = True
        RichTextBox1.SelColor = vbBlue
        RichTextBox1.SelStart = Len(RichTextBox1.Text)
       
        pos = InStr(pos, RichTextBox1.Text, ":") + 1
    Loop
End Sub

raul338

y si el mensaje contiene ":" descuadra todo :D

TGa.

:S jaja bueno pero hasta ahi hice codigo creo que ahora le toca a el seguir :D

Edu

Puedes explicar de nuevo o dejar todo todo tu codigo? no entiendo q quieres hacer

Sanlegas

#15
Código (vb) [Seleccionar]
Public Function ChangeColor(RT As RichTextBox, StrStart As String, StrEnd As String, Color As Long)
Dim Text        As String
Dim N           As Long

       Text = RT.Text
       N = InStr(Text, StrStart)
       Do While CBool(N)
           Mid(Text, N, Len(StrStart)) = String(Len(StrStart), "?")
           RT.SelStart = N + Len(StrStart)
           N = InStr(Text, StrEnd)
           If CBool(N) Then
               Mid(Text, N, Len(StrEnd)) = String(Len(StrEnd), "?")
               RT.SelLength = N - RT.SelStart - 1
               RT.SelColor = Color
               RT.SelStart = 0
           End If
       N = InStr(Text, StrStart)
       DoEvents
       Loop
       If CBool(RT.SelStart) Then
           RT.SelLength = Len(RT.Text) - RT.SelStart
           RT.SelColor = color
       End If
       
End Function

ChangeColor RT, ":", vbNewLine, vbBlue

:P, lo hize a prisas XD

DarkMatrix

Yo lo hago asi

En un Modulo:

Código (vb) [Seleccionar]
Option Explicit

Enum eTextColor

    Black = 0
    Blue = 1
    Green = 2
    Cyan = 3
    Red = 4
    Magenta = 5
    Brown = 6
    Grey = 7
    DarkGrey = 8
    BrightBlue = 9
    BrightGreen = 10
    BrightCyan = 11
    BrightRed = 12
    Pink = 13
    Yellow = 14
    white = 15

End Enum

Public Sub AddText(oRichTextBox As Object, ByVal Msg As String, ByVal Color As eTextColor, Optional NewLine As Boolean = True, Optional CustomColor As Long = -1)

    Dim s As String
    Dim c As Long

    If NewLine = True Then

        s = Msg & vbNewLine

    Else

        s = Msg

    End If

    c = oRichTextBox.SelStart
    oRichTextBox.SelStart = Len(oRichTextBox.Text)

    If CustomColor <> -1 Then

        oRichTextBox.SelColor = CustomColor

    Else

        oRichTextBox.SelColor = QBColor(Color)

    End If

    oRichTextBox.SelText = s
    oRichTextBox.SelStart = Len(oRichTextBox.Text) - 1

End Sub


En Tu Codigo lo llamarias asi

Código (vb) [Seleccionar]
If Mid(Datos, 1, 3) = "MSG" Then 'Cuando recibo es MSGmensaje

    Mensaje = Split(Mid(Datos, 4, Len(Datos)), ":")

    Call AddText(Text1.Text, Mensaje(0) & ": ", vbBlack, False)
    Call AddText(Text1.Text, Mensaje(1), vbBlue, True)

End If

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix

Stelio Kontos

Usé y modifiqué a mi gusto el módulo de DarkMatrix y funciona perfecto.
Solucionado, muchas gracias.