Ver Mensaje Individual
  #5 (permalink)  
Antiguo 15/03/2003, 05:10
sdnsdlm
 
Fecha de Ingreso: abril-2002
Mensajes: 438
Antigüedad: 22 años, 1 mes
Puntos: 2
Si la historia fuera que después de abandonar el foco del richtextbox se te pusiera lo que está entre interrogantes en otro color la cosa sería extemadamente sencilla, simplemente buscas el ¿ y el ? y así inicializas las propiedades selstart y sellength del rtf y luego usas el selcolor.

Pero supongo que quieres que se ponga en rojo mientras el usuario escribe, entonces creo (no sé) que la cosa se complica un poco, pero bueno, también puede salir "pa lante", esto es lo que yo te aconsejaría así de entrada y sin pensar demasiado (seguro que hay un solución mejor):

- Declára dos variables booleanas, una de ellos marcará que se ha pulsado ¿ y otra marcará que se ha pulsado ?. Serán estáticas.
- En el evento keyPress del rtf ves tragando hasta que pulse ¿. En caso de que lo haya hecho entonces ya pones la booleana que marca el comienzo a true.
- Haces un if de esta variable y si es true haces:
RichTextBox1.SelLength = Len(RichTextBox1.Text)
RichTextBox1.SelColor = vbRed
-Dentro de este if ...

Bueno, veo que me estoy yendo de la pelota demasiado, lo mejor que puedo hacer es ponerte el código que he probado y me ha funcionado, se puede mejorar pero como punto de partida te puede servir:

Dim c As Boolean, b As Boolean
Private Sub RichTextBox1_KeyPress(KeyAscii As Integer)
If KeyAscii = Asc("¿") Then
RichTextBox1.SelStart = Len(RichTextBox1.Text)
c = True
End If
If c Then
RichTextBox1.SelLength = Len(RichTextBox1.Text)
RichTextBox1.SelColor = vbRed
If KeyAscii = Asc("?") Then
c = False
b = True
Exit Sub
End If
End If
If b Then
RichTextBox1.SelStart = Len(RichTextBox1.Text)
RichTextBox1.SelLength = 1
RichTextBox1.SelColor = vbBlack
b=false
End If
End Sub

Quedan algunas cosas por currarse pero bueno como piedra de partida te puede servir.

Saludos.