Você está na página 1de 17

1 - Descripcin del control RichTextBox

Este control , similar a un TextBox pero que posee mas opciones, se debe aadir desde el men Proyecto > Componentes bajo el nombre de Microsoft Rich TextBox Control, ya que no es un control estndar. A diferencia del control TextBox clsico, este permite por ejemplo: Cambiar el color de determinada porcin de un texto, el tipo de fuente, mostrar imgenes, cargar archivos de texto enriquecido ( archivos RTF ), leer y guardar archivos mediante una serie de mtodos que posee el control, tanto RTF como TXT, buscar cadenas de texto dentro del control con un mtodo propio, y muchas otras opciones.

2 - Propiedades SelText , SelStart y SelLength


Estas tres propiedades, que tambin la posee el control TextBox, y algunos otros controles como el ComboBox por ejemplo, permite:

SelText: Devuelve o establece la cadena que contiene el texto seleccionado actualmente. SelStart: Devuelve o establece el punto inicial del texto seleccionado. SelLength: Devuelve o establece el nmero de caracteres seleccionados.

Un ejemplo del uso de SelLength, SelStart y SelText


Primero asigna a la propiedad Text, la cadena "Hoy es Lunes". Luego se posiciona mediante SelStart en el sptimo caracter ( para especificar el punto de inicio de la seleccin ) , y por ltimo a SelLength se le asigna el nmero 5. Esto como resultado seleccionar la palabra "Lunes"

RichTextBox.Text = "Hoy es Lunes" RichTextBox.SelStart = 7 RichTextBox.SelLength = 5 Teniendo la frase seleccionada, si ahora consultamos la propiedad SelText, por ejemplo mediante un MsgBox, nos mostrar dicha porcin de texto.

MsgBox RichTextBox.SelText

SelText, al igual que las dos anteriores, es una propiedad de Lectura y escritura, as como en este caso consultamos el valor y lo mostramos mediante un mensaje, tambin podemos cambiarlo, es decir establecer uno nuevo. Lo siguiente, selecciona la frase Lunes, y al presionar un Command1 se cambia el texto seleccionado por la palabra "Martes"

Private Sub Command1_Click() RichTextBox.SelText = "Martes" End Sub Private Sub Form_Load() RichTextBox.Text = "Hoy es Lunes" RichTextBox.SelStart = 7 RichTextBox.SelLength = 5 End Sub

Nota: Si no hay ningn texto, frase o caracter seleccionado en el RichText, la propiedad SelText contiene una cadena vaca, por lo tanto, si se le establece un nuevo valor, se aadir el mismo tomando el valor de la propiedad SelStart.

3 - Propiedades para modificar el estilo de fuente de la seleccin y otras opciones


Para modificar y consultar el estilo de la fuente seleccionada en el control como algunas otras caractersticas, como por ejemplo Negrita, Itlica, subrayado, color del texto, alineacin ,etc.., se pueden utilizar las siguientes propiedades:

SelUnderline : Devuelve o establece el formato subrayado del texto seleccionado actualmente. SelStrikethru: Devuelve o establece el formato tachado del texto seleccionado actualmente. SelBold: Devuelve o establece el formato en negrita del texto seleccionado actualmente. SelItalic: Devuelve o establece el formato en cursiva del texto SelRTF: Devuelve o establece el texto (en formato .RTF) de la seleccin actual de un control RichTextBox SelFontSize: Devuelve o establece un valor que especifica el tamao de la fuente usada para mostrar texto en un control RichTextBox. SelFontName: Devuelve o establece la fuente usada para mostrar el texto seleccionado actualmente o los caracteres que siguen inmediatamente al punto de insercin del control SelColor: Devuelve o establece un valor que determina el color del texto en un control RichTextBox. SelBullet: Devuelve o establece un valor que determina si un prrafo en un control RichTextBox que contiene la seleccin actual o el punto de insercin tienen el estilo de Vieta. SelAlignment: Devuelve o establece un valor que controla la alineacin de lo prrafos en un control RichTextBox.

Ejemplos del uso estas propiedades:


Lo siguiente, cambia al texto seleccionado del RichTextBox, el tamao , el tipo de fuente por defecto a Verdana y lo coloca en Negrita al presionar un Command1:

Private Sub Command1_Click() With El_RichTextBox .SelFontSize = 16

.SelBold = True .SelFontName = "Verdana" End With End Sub Private Sub Form_Load() El_RichTextBox.Text = "Un parrafo" & vbNewLine & "Otro parrafo" End Sub

Si quisiremos cambiar por ejemplo el tipo fuente, el tamao y el estilo de todo el contenido del control, es decir no solo la porcin seleccionada, podemos utilizar el objeto Font:

Private Sub Command2_Click() With El_RichTextBox.Font .Bold = True 'Negrita .Italic = True 'Itlica .Name = "Verdana" 'fuente .Size = 25 'Tamao .Underline = True 'Subrayado End With End Sub

Ahora en este ejemplo, se utiliza la propiedad SelAlignment, para alinear el texto a la izquierda, a la derecha y para centrarlo : Colocar un List1 y un RichTextBox:

Private Sub Form_Load() List1.AddItem " Alinear a la izquierda " List1.AddItem " Alinear a la Derecha " List1.AddItem " Centrar texto "

El_RichTextBox.Text = "Prrafo 1" & & "Parrafo 2" & "Parrafo 3" & "Prrafo 4" End Sub

vbNewLine & & vbNewLine & vbNewLine & vbNewLine

vbNewLine _ & vbNewLine _ & vbNewLine _ & vbNewLine _

Private Sub List1_Click() 'Establece la alineacin: _ El valor 0 alinea a la izquierda _ El 1 a la derecha, y el 2 centra el texto El_RichTextBox.SelAlignment = List1.ListIndex End Sub

En el ejemplo anterior, la propiedad SelAlignment, le aplica la alineacin al prrafo donde se encuentra el punto de insercin. En cambio, Si quisiremos alinear todo el contenido del RichTextBox, se podra hacer de esta manera, utilizando la propiedad SelLength para seleccionar todo el contenido en conjunto con la funcin Len de Visual basic:

Private Sub List1_Click() El_RichTextBox.SelStart = 0 El_RichTextBox.SelLength = Len(El_RichTextBox) El_RichTextBox.SelAlignment = List1.ListIndex End Sub

Lo siguiente, cambia de color Azul y establece en Negrita, la porcin de texto seleccionado al presionar un Command1, utilizando la propiedad SelColor y SelBold.

El_RichTextBox.SelColor = vbBlue El_RichTextBox.SelBold = True

Cambia a color rojo todo el contenido del control:

With El_RichTextBox

'Selecciona todo .SelStart = 0 .SelLength = Len(El_RichTextBox) 'Establece el Color rojo .SelColor = vbRed End With

Este ejemplo, que no tiene mucho sentido, pero muestra como cambiar de color cada caracter a un valor aleatorio, recorrindolo uno a uno mediante un bucle:

Private Sub Command2_Click() ' Recorre caracter por caracter For caracter = 0 To Len(El_RichTextBox.Text) With El_RichTextBox 'Incrementa el SelStart .SelStart = caracter 'Selecciona el caracter .SelLength = .SelLength + 1 'Establece el Color aleatorio al caracter actual .SelColor = RGB(Int((255) * Rnd), _ Int((255) * Rnd), _ Int((255) * Rnd)) End With Next End Sub Private Sub Form_Load() El_RichTextBox.Font.Size = 12 El_RichTextBox.Font.Bold = True El_RichTextBox.Text = "Parrafo 1" & vbNewLine & vbNewLine _ & "Parrafo 2" & vbNewLine & vbNewLine _ End Sub

4 - Utilizar Vietas mediante la propiedad SelBullet


Este ejemplo muestra como utilizar dicha propiedad en conjunto con la propiedad BulletIndent para aplicar vietas. Como muestra el grfico, al presionar el checkBox, se establece la propiedad en SelBullet en True. BulletIndent en cambio, especifica la sangra de la lnea que tiene la vieta. Colocar un check1 y un control RichText

Nota: la propiedad BulletIndent para el margen, toma como escala el valor del contenedor del control RichTextbox, es decir si por ejemplo est en un formulario y el ScaleMode en VbPixels, el margen ser en pixeles.

Private Sub Check1_Click() If Check1 Then 'Sangra de 20 pixeles El_RichTextBox.BulletIndent = 20

'Establece la vieta al Richtext El_RichTextBox.SelBullet = True Else ' Quita la vieta El_RichTextBox.SelBullet = False End If El_RichTextBox.SetFocus End Sub Private Sub El_RichTextBox_SelChange() 'Cambia el Value del check segn el valor _ de SelBullet del prrafo donde estamos ubicados If El_RichTextBox.SelBullet Then Check1.Value = 1 Else Check1.Value = 0 End If End Sub Private Sub Form_Load() 'Pixeles Me.ScaleMode = vbPixels Check1.Caption = " Vieta " End Sub

5 - Propiedad AutoVerbMenu
La Propiedad AutoVerbMenu, devuelve o establece un valor que indica si los verbos seleccionados del control RichTextBox, se mostrarn como un men emergente al hacer clic con el botn secundario del mouse. Es decir esta propiedad lo que hace es poder utilizar o no, el men emergente para copiar, pegar, seleccionar etc..

Este propiedad de tipo Boolean, por defecto se encuentra con el valor False al aadir un RichTextBox al Formulario, es decir desactivada, por lo tanto no mostrar dicho men emergente

6 - Propiedad HideSelection
HideSelection, que tambin la posee algunos otros controles como por ejemplo el control ListView, lo que hace es, si hay contenido seleccionado en el Rich y el mismo pierde el foco al pasar a otro control u objeto, ocultar o no la seleccin. Este grfico muestra como el control Check tiene el foco y la seleccin del texto permanece visible.

7 - Propiedad ScrollBars

Esta propiedad visualiza barras de desplazamiento si es necesario, y tiene cuatro valores posibles: el 0 indica que no mostrar barras de scroll, el 1 Horizontal, el 2 Vertical, y el 3 Ambas barras. Importante: esta propiedad se debe establecer en tiempo de diseo, ya que en tiempo de ejecucin es de solo lectura . Por lo tanto se puede utilizar la propiadad DisableScroll para desactivar o activar las barras en tiempo de ejecucin si es que necesitamos hacerlo.

8 - Mtodo LoadFile y SaveFile


El mtodo LoadFile se utiliza para cargar un archivo .RTF o un archivo de texto en el control RichTextBox. En cambio el Mtodo SaveFile se utiliza para Guardar en un archivo el contenido del control.

Por ejemplo lo siguiente carga un archivo RTF llamado El_Archivo.rtf ubicado en la unidad c:

El_RichTextBox.LoadFile "c:\El_Archivo.rtf", rtfRTF

Como se ve, el mtodo posee dos parmetros, el primero es la ruta del fichero y el segundo es el tipo de archivo. Si vamos a cargar un archivo RTF, se debe pasar la constante rtfRTF que equivale a 0. En cambio para un archivo de texto plano, se debe pasar la constante rtfText, como muestra la siguiente lnea:

El_RichTextBox.LoadFile "c:\El_Archivo.txt", rtfText

Nota: Al utilizar este mtodo para cargar un archivo, todo el contenido del control que haya en el momento se perder.

El mtodo SaveFile como se dijo, se utiliza para guardar el contenido del control en un nuevo archivo. Al igual que en el mtodo LoadFile, se debe especificar el tipo del fichero, un RTF o un archivo de texto, con las constantes mencionadas anteriormente. Por ejemplo la siguientes lneas, genera dos prrafos con el color de los caracteres aleatorios, y graba el contenido en la unidad c: bajo el nombre de Ejemplo.RTF:

Private Sub Command2_Click() ' Recorre cada caracter del control For caracter = 0 To Len(El_RichTextBox.Text) With El_RichTextBox 'Incrementa el punto de insercin ,es decir el .SelStart = caracter 'Selecciona el caracter actual .SelLength = .SelLength + 1 'Cambia el tamao de la fuente de este caracter .SelFontSize = Int((32 - 10 + 1) * Rnd + 10) SelStart

'Establece el Color aleatorio al caracter actual .SelColor = RGB(Int((255) * Rnd), _ Int((255) * Rnd), _ Int((255) * Rnd)) 'Guarda el contenido en un nuevo archivo RTF .SaveFile "c:\ejemplo.rtf", rtfRTF End With Next End Sub Private Sub Form_Load() 'Agrega un contenido al control El_RichTextBox.Font.Size = 12 El_RichTextBox.Font.Bold = True El_RichTextBox.Text = "Parrafo 1" & vbNewLine & vbNewLine _ & "Prrafo 2" & vbNewLine & vbNewLine _ End Sub

9 - Mtodo Find - Buscar cadenas dentro del RichTextBox


Como dice el ttulo, este mtodo se utiliza para buscar una cadena especificada en el texto del control. Pos = El_RichTextBox.Find(El_Texto, Inicio, Fin, Opciones)

El primer parmetro es obligatorio, ya que es la cadena de caracteres a buscar. En cambio Inicio y Fin son opcionales, y establecen la posicin donde comenzar a buscar, y hasta donde buscar respectivamente. Si en el caso de Inicio no especificamos ningn nmero donde comenzar la bsqueda, buscar a partir de donde se encuentre el cursor ( punto de insercin ). En el parmetro Fin, si no especificamos hasta que caracter buscar, lo har hasta el ltimo carcter del Richtext El parmetro Opciones tambin es opcional y admite los siguientes valores:

rtfWholeWord: Indica que busque la palabra completa rtfMatchCase: establece si se buscar teniendo en cuenta las diferencias entre maysculas y minsculas. rtfNoHighlight: Si se pasa esta opcin, y al buscar se encuentra la cadena, no resaltar la seleccin, es decir la ocultar.

Todas estos tres valores para el parmetro Opciones, se pueden utilizar en forma conjunta para combinar dichas opciones utilizando el operador Or, por ejemplo: Colocar un Command1, un Text1 y un RichTextBox:

Private Sub Command1_Click() Dim Pos As Long Dim Inicio As Long 'Buscar a partir de la propiedad SelStart Inicio = El_RichTextBox.SelStart 'Buscar hasta el fin del contenido del RichTextBox Fin = Len(El_RichTextBox.Text) 'Busca y resalta la palabra solo si el texto _ ingresado en Text1 es la palabra completa _ distinguiendo de Mayscula y minscula Pos = El_RichTextBox.Find(Text1, _ Inicio, _ Fin, _ rtfWholeWord Or rtfMatchCase) End Sub Private Sub Form_Load() Command1.Caption = " Buscar " El_RichTextBox.Text = "Hola Mundo" Text1 = "Mundo" El_RichTextBox.HideSelection = False End Sub

El mtodo Find, al ejecutarlo, devuelve un nmero que indica la posicin del primer caracter encontrado. Si no se encontr la frase a buscar, la misma devuelve el valor -1. Al final de la pagina hay dos enlaces con ejemplos que utilizan este mtodo para buscar cadenas y reemplazar, seleccionar etc...

10 - Pegar grficos con SendKeys


Para aadir grficos e imgenes en el control , dos formas posibles es utilizando la funcin SendKeys de vb, o utilizando la funcin del api SendMessage. Este ejemplo para descargar realizado por un miembro del foro, lo que hace es al presionar un Commandbutton, cambia los caracteres del cdigo vb para usar con Smileys en el texto del RichText y de acuerdo al cdigo vb, le pega la imagen correspondiente . Cada imagen se encuentra en unos picturebox Vista previa del ejemplo

Descargar

11 - Aadir tabulacin en el control


Este simple ejemplo muestra como poder utilizar la tecla Tab para poder insertar tabulacin en el richTextBox

Colocar un control Richetextbox1 en el formulario y pegar el siguiente cdigo fuente


' vector Dim arrTabStop() As Boolean 'Deshabilita el TabStop de todos los controles del formulario Private Sub RichTextBox1_GotFocus() Dim i As Integer ' redimensiona el array a la cantidad de controles que haya en el form ReDim arrTabStop(0 To Me.Controls.Count - 1) As Boolean ' recorre todos los controles For i = 0 To Me.Controls.Count - 1 ' guarda los valores para poder restaurarlos luego arrTabStop(i) = Controls(i).TabStop ' los deshabilita Controls(i).TabStop = False Next End Sub 'Restaura el TabStop de los controles del formulario Private Sub RichTextBox1_LostFocus() For i = 0 To Controls.Count - 1 Controls(i).TabStop = arrTabStop(i) Next End Sub

12 - Eventos del control RichTextBox


La mayora de los eventos son iguales a los que posee un control TextBox y los dems controles, GotFocus, LostFocus, Change etc... El nico evento propio y exclusivo del control es SelChange. Este evento ocurre o se dispara cuando la seleccin de texto actual en el control RichTextBox ha cambiado o cuando se ha movido el punto de insercin dentro del control. Para entender este evento, por ejemplo si colocs un MsgBox dentro de SelChange

Private Sub El_RichTextBox_SelChange() MsgBox " Se ejecut el evento SelChange " End Sub

Cada ves que muevas el punto de insercin en el control, o cambie alguna parte del texto seleccionado, se ejecutar, inclusive antes que el evento Change. Una forma de entender el tema de cuando se produce tal o cual evento antes que otro, es probar por ejemplo, colocando un MsgBox o un Debug.Print, en cada evento, e interactuar con el control para ver como se comportan. Por ejemplo: Colocar un command1 y un RichText:
Private Sub Command1_Click() With El_RichTextBox .SelStart = 0 .SelLength = Len(.Text) .SelColor = vbRed End With End Sub Private Sub El_RichTextBox_Change() MsgBox " Se ejecut el Evento Change " End Sub Private Sub El_RichTextBox_SelChange() MsgBox " Se ejecut el evento SelChange " End Sub

Private Sub Form_Load() El_RichTextBox.Text = " Una frase " End Sub

Por ltimo: Este control, posee varios otros mtodos y propiedades que los vistos en esta gua. A continuacin hay algunos enlaces relacionados al control.

Você também pode gostar