Sección de tutoriales y manuales vb
Esta sección explica el uso básico con ejemplos del control Microsoft RichTextBox de Visual basic.
Contenido:
Este control , similar a un TextBox pero que posee mas opciones, se debe añadir desde el menú Proyecto > Componentes bajo el nombre de Microsoft Rich TextBox Control, ya que no es un control estándar.
A diferencia del control TextBox clásico, este permite por ejemplo: Cambiar el color de determinada porción de un texto, el tipo de fuente, mostrar imágenes, cargar archivos de texto enriquecido ( archivos RTF ), leer y guardar archivos mediante una serie de métodos que posee el control, tanto RTF como TXT, buscar cadenas de texto dentro del control con un método propio, y muchas otras opciones.
Estas tres propiedades, que también la posee el control TextBox, y algunos otros controles como el ComboBox por ejemplo, permite:
Primero asigna a la propiedad Text, la cadena "Hoy es Lunes". Luego se posiciona mediante SelStart en el séptimo caracter ( para especificar el punto de inicio de la selección ) , y por último a SelLength se le asigna el número 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 porción 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, también 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 ningún texto, frase o caracter seleccionado en el RichText, la propiedad SelText contiene una cadena vacía, por lo tanto, si se le establece un nuevo valor, se añadirá el mismo tomando el valor de la propiedad SelStart.
Para modificar y consultar el estilo de la fuente seleccionada en el control como algunas otras características, como por ejemplo Negrita, Itálica, subrayado, color del texto, alineación ,etc.., se pueden utilizar las siguientes propiedades:
Lo siguiente, cambia al texto seleccionado del RichTextBox, el tamaño , 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 quisiéremos cambiar por ejemplo el tipo fuente, el tamaño y el estilo de todo el contenido del control, es decir no solo la porción seleccionada, podemos utilizar el objeto Font:
Private Sub Command2_Click() With El_RichTextBox.Font .Bold = True 'Negrita .Italic = True 'Itálica .Name = "Verdana" 'fuente .Size = 25 'Tamaño .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 = "Párrafo 1" & vbNewLine & vbNewLine _
& "Parrafo 2" & vbNewLine & vbNewLine _
& "Parrafo 3" & vbNewLine & vbNewLine _
& "Párrafo 4" & vbNewLine & vbNewLine _
End Sub
Private Sub List1_Click()
'Establece la alineación: _
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 alineación al párrafo donde se encuentra el punto de inserción. En cambio, Si quisiéremos alinear todo el contenido del RichTextBox, se podría hacer de esta manera, utilizando la propiedad SelLength para seleccionar todo el contenido en conjunto con la función 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 porción 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, recorriéndolo 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
Este ejemplo muestra como utilizar dicha propiedad en conjunto con la propiedad BulletIndent para aplicar viñetas. Como muestra el gráfico, al presionar el checkBox, se establece la propiedad en SelBullet en True. BulletIndent en cambio, especifica la sangría de la línea que tiene la viñeta.
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 'Sangría de 20 pixeles El_RichTextBox.BulletIndent = 20 'Establece la viñeta al Richtext El_RichTextBox.SelBullet = True Else ' Quita la viñeta El_RichTextBox.SelBullet = False End If El_RichTextBox.SetFocus End Sub Private Sub El_RichTextBox_SelChange() 'Cambia el Value del check según el valor _ de SelBullet del párrafo 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 = " Viñeta " End Sub
La Propiedad AutoVerbMenu, devuelve o establece un valor que indica si los verbos seleccionados del control RichTextBox, se mostrarán como un menú emergente al hacer clic con el botón 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 añadir un RichTextBox al Formulario, es decir desactivada, por lo tanto no mostrará dicho menú emergente
HideSelection, que también 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 selección.
Este gráfico muestra como el control Check tiene el foco y la selección del texto permanece visible.
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 diseño, ya que en tiempo de ejecución es de solo lectura . Por lo tanto se puede utilizar la propiadad DisableScroll para desactivar o activar las barras en tiempo de ejecución si es que necesitamos hacerlo.
El método LoadFile se utiliza para cargar un archivo .RTF o un archivo de texto en el control RichTextBox.
En cambio el Método 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 método posee dos parámetros, 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 línea:
El_RichTextBox.LoadFile "c:\El_Archivo.txt", rtfText
Nota: Al utilizar este método para cargar un archivo, todo el contenido del control que haya en el momento se perderá.
El método SaveFile como se dijo, se utiliza para guardar el contenido del control en un nuevo archivo. Al igual que en el método LoadFile, se debe especificar el tipo del fichero, un RTF o un archivo de texto, con las constantes mencionadas anteriormente.
Por ejemplo la siguientes líneas, genera dos párrafos 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 inserción ,es decir el SelStart .SelStart = caracter 'Selecciona el caracter actual .SelLength = .SelLength + 1 'Cambia el tamaño de la fuente de este caracter .SelFontSize = Int((32 - 10 + 1) * Rnd + 10) '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 _ & "Párrafo 2" & vbNewLine & vbNewLine _ End Sub
Como dice el título, este método se utiliza para buscar una cadena especificada en el texto del control.
Pos = El_RichTextBox.Find(El_Texto, Inicio, Fin, Opciones)
El primer parámetro es obligatorio, ya que es la cadena de caracteres a buscar. En cambio Inicio y Fin son opcionales, y establecen la posición donde comenzar a buscar, y hasta donde buscar respectivamente. Si en el caso de Inicio no especificamos ningún número donde comenzar la búsqueda, buscará a partir de donde se encuentre el cursor ( punto de inserción ). En el parámetro Fin, si no especificamos hasta que caracter buscar, lo hará hasta el último carácter del Richtext
El parámetro Opciones también es opcional y admite los siguientes valores:
Todas estos tres valores para el parámetro 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 Mayúscula y minúscula 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 método Find, al ejecutarlo, devuelve un número que indica la posición 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 método para buscar cadenas y reemplazar, seleccionar etc...
Para añadir gráficos e imágenes en el control , dos formas posibles es utilizando la función SendKeys de vb, o utilizando la función 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 código vb para usar con Smileys en el texto del RichText y de acuerdo al código vb, le pega la imagen correspondiente .
Cada imagen se encuentra en unos picturebox
Vista previa del ejemplo
Este simple ejemplo muestra como poder utilizar la tecla Tab para poder insertar tabulación en el richTextBox
Colocar un control Richetextbox1 en el formulario y pegar el siguiente código 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
La mayoría de los eventos son iguales a los que posee un control TextBox y los demás controles, GotFocus, LostFocus, Change etc...
El único evento propio y exclusivo del control es SelChange.
Este evento ocurre o se dispara cuando la selección de texto actual en el control RichTextBox ha cambiado o cuando se ha movido el punto de inserción dentro del control.
Para entender este evento, por ejemplo si colocás 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 inserción 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 métodos y propiedades que los vistos en esta guía.
A continuación hay algunos enlaces relacionados al control.
Buscar en Recursos vb
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar