Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

[VB6] RichTextBox.

Estas en el tema de [VB6] RichTextBox. en el foro de Visual Basic clásico en Foros del Web. Buenas gente, recurro otra vez a ustedes ya que no he podido solucionar un inconveniene que tengo... Ya que estamos, les hago dos consultas: 1. ...
  #1 (permalink)  
Antiguo 23/05/2011, 21:07
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 13 años, 7 meses
Puntos: 0
[VB6] RichTextBox.

Buenas gente, recurro otra vez a ustedes ya que no he podido solucionar un inconveniene que tengo... Ya que estamos, les hago dos consultas:

1. ¿Es posible unir dos RichTexBox, manteniendo su respectivo formato? En caso de ser posible, me gustaría saber como hacerlo, ya que no he podido lograrlo ni encontrar una forma en la web...

2. Tengo otro problema con este componente. Verán, estoy intentando realizar un programa de Chat, donde quiero distinguir a cada usuario con un respectivo color.

Ahora bien, en principio a la hora de cambiar a otro color, me modifica la primera nueva linea ingresada correctamente... pero luego, a medida que voy ingresando más lineas, solamente me mantiene el color correcto en la última ingresada, asignandole al resto de las lineas el formato de la primer linea, perdiendo por completo el objetivo del programa ^^

Si ya sé, habrá quedado medio confuso :P Así que les dejo la parte del programa modificado para que lo puedan ver por ustedes mismos. Con él, cambio el formato a cada linea de texto, a medida que la voy ingresando:

El formulario es muy simple y consta de los siguientes componentes:

1 TextBox ==> Nombre: TextoAEnviar
1 RichTextBox ==> Nombre: T
1 CommandButton ==> Nombre: CommandButton
1 ComboBox ==> Nombre: Combo1


Código VB:
Ver original
  1. Private Sub Form_Load()
  2. With Combo1
  3.     .List(0) = "Verde"
  4.     .ItemData(0) = 1
  5.     .List(1) = "Rojo"
  6.     .ItemData(1) = 2
  7.     .List(2) = "Amarillo"
  8.     .ItemData(2) = 3
  9. End With
  10. Command1.Caption = "Enviar"
  11. End Sub
  12.  
  13. Private Sub Command1_Click()
  14. T.Text = T.Text & TextoAEnviar.Text & vbCrLf
  15. Call Color Combo1.ItemData(Combo1.ListIndex), Len(TextoAEnviar.Text & vbCrLf)
  16. End Sub
  17.  
  18. Private Sub Color(From As Integer, LenDato As Integer)
  19.  
  20. T.SelStart = Len(T.Text) - LenDato
  21. T.SelLength = LenDato
  22.  
  23. Select Case From
  24. Case 1
  25.     T.SelColor = vbGreen
  26. Case 2
  27.     T.SelColor = vbRed
  28. Case 3
  29.     T.SelColor = vbYellow
  30. End Select
  31. T.SelLength=0
  32. End Sub

He intentado de varias formas, pero no he conseguido una solución que me sea eficiente. Si alguno puede darme una mano, les agradecería mucho.

Si no logran conseguir hacer que funcione mi codigo, y tienen alguna mejor idea por donde encarar la solución, sean bienvenidos ^^ Si no tienen ganas de escribir un codigo, pueden comentarmela simplemente y yo veré de examinarlo por mi propia cuenta... Ya que lo que más valoro es la idea ^^

Saludos!
  #2 (permalink)  
Antiguo 23/05/2011, 22:44
Avatar de servantsoftware  
Fecha de Ingreso: abril-2011
Ubicación: 1 Pedro 4.11
Mensajes: 94
Antigüedad: 13 años, 8 meses
Puntos: 3
Respuesta: [VB6] RichTextBox.

Esto te puede ayudar mucho: http://www.recursosvisualbasic.com.ar/htm/utilidades-codigo-fuente/chat.htm
  #3 (permalink)  
Antiguo 24/05/2011, 14:43
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: [VB6] RichTextBox.

Uh, me mataste con eso jaja... El único chat que usa el formato de RichTextBox ahí, lo realiza aplicando directamente la codificación del formato RTF, es decir por ejemplo escribiendo algo así:

"{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fmoder n\fprq1\fcharset0 Lucida Console;}{\f1\fnil\fcharset0 MS Sans Serif;}}"

Me va a llevar un tiempito comprender la codificación, y para lo que quiero hacer, no sé si vale la pena el esfuerzo ^^ Pero bueno, hasta ahora no pude dar con la solución, así que voy a probar ir trabajando un poco con la codificación del RTF, seguramente logre poder manejarlo, aunque sea basicamente ^^ Thanks...

De todas formas, obviamente sigue siendo bienvenida y agradecida cualquier idea que puedan dar sobre el asunto...

Saludos!
  #4 (permalink)  
Antiguo 24/05/2011, 16:04
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: [VB6] RichTextBox.

Buenas otra vez gente! Les comento que ya pude solucionarlo, lo logré respondiendo a la primera de mis preguntas, luego de ponerme a probar por cuenta propia algunas propiedades del componente ^^ La solución fue relativamente simple, y me implico solamente el crear un segundo RichTextBox (El cual permanece invisible durante la ejecución del programa), al cual lo utilizo para modificar el formato de la nueva linea a ingresar, y luego copiarlo al RichTetxtBox original.

Para unir un RichTextBox con otro, simplemente pongo el puntero al final del primer RTB y selecciono el texto del segundo. Luego utilizando simplemente la propiedad .selRTF, realizo la siguiente igualdad RTB1.selRTF=RTB2.SelRTF.

Para que lo puedan ver en acción, por si alguno llega a tener la misma inquietud que yo, modifiqué el codigo anterior (El nombre del nuevo RichTextBox es "T2"):

Código VB:
Ver original
  1. Private Sub Form_Load()
  2. With Combo1
  3.     .List(0) = "Verde"
  4.     .ItemData(0) = 1
  5.     .List(1) = "Rojo"
  6.     .ItemData(1) = 2
  7.     .List(2) = "Amarillo"
  8.     .ItemData(2) = 3
  9. End With
  10. BEnviar.Caption = "Enviar"
  11. T2.Visible = False
  12. End Sub
  13.  
  14. Private Sub BEnviar_Click()
  15. T2.Text = TextoAEnviar.Text
  16. Color Combo1.ItemData(Combo1.ListIndex), Len(TextoAEnviar.Text & vbCrLf)
  17. T.SelStart = Len(T.Text)
  18. T.SelRTF = T2.TextRTF
  19. End Sub
  20.  
  21. Private Sub Color(From As Integer, LenDato As Integer)
  22.  
  23. T2.SelStart = 0
  24. T2.SelLength = LenDato
  25. Select Case From
  26. Case 1
  27.     T2.SelColor = vbGreen
  28. Case 2
  29.     T2.SelColor = vbRed
  30. Case 3
  31.     T2.SelColor = vbYellow
  32. End Select
  33. End Sub

Saludos!

Etiquetas: richtextbox, vb6
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:36.