Richtextbox VB 2008
Richtextbox VB 2008
Richtextbox VB 2008
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.
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.
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.
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.
.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
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.
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
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.
'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.
Por ejemplo lo siguiente carga un archivo RTF llamado El_Archivo.rtf ubicado en la unidad c:
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:
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
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...
Descargar
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.