Sé que el título de este mensaje se escucha medio raro ya que la respuesta es obvia: a todos nos gusta algo rico (pizza, helado u otras cosas más ricas), pero el Visual Basic 2005 tiene un control muy rico: el RichTextBox, el cual es igual que una caja de texto normal, solo que este puede contener negritas, cursivas, imágenes y toda la onda.
Para ejemplificar su uso, voy a crear una aplicación Windows que abra un archivo RTF y lo guarde. Voy a aprovechar la aplicación para mostrar el funcionamiento de dos controles útiles que tiene el VB 2005: el OpenFileDialog y el SaveFileDialog. Estos son dos ventanas que permiten abrir y guardar archivos respectivamente.
En primer lugar, voy a dibujar una interfaz que contenga un RichTextBox (que yo llamé rtfTexto), 4 botones (btnBorrar, btnAbrir, btnGuardar y btnSalir), un OpenFileDialog (frmAbrir) y un SaveFileDialog (frmGuardar). Todo esto en una ventana llamada frmRTF. Así se ve en la vista diseño:
Para divertirnos un poco, voy a manipular el evento Resize del formulario para que cambie de tamaño mi caja de texto y los botones se acomoden cada vez que el usuario cambia de tamaño la ventana. Esto lo hago en la vista de código seleccionando (frmRTF eventos) como se ve en esta figura:
Y del otro lado, elijo el evento Resize, como se ve así:
El código para este evento sería este:
Creo que está bastante claro. Solo cambio las propiedades Width y Height del RichTextBox (rtfTexto) de acuerdo al tamaño de la ventana (Me). También cambié la propiedad Top de los botones para que se alinearan de acuerdo a la altura de la ventana.
Una función muy simple es el del primer botón (que yo llamé btnBorrar) que se encarga de dejar en blanco la caja de texto "rico". Solo usa un método (función) del texto rico que lo b orra todo, el Clear. Así queda el código:
El código que abre un archivo (del botón btnAbrir) declara 3 variables para contener el nombre del archivo (strArchivo), la extensión del archivo (strExtension) y la manera en que se va a guardar el archivo al disco (intTipoArch). Después le digo la extensión de archivo por defaúlt (en mi caso quiero que abra archivos con extensión RTF). Esto se establece con la propiedad DefaultExt del objeto OpenFileDialog (que en mi caso se llama frmAbrir). Luego establezco la lista de los tipos de archivos que aparecerá en la ventana. Para esto, le digo a la propiedad Filter que ponga dos opciones en la ventana: la primera va a decir Archivos RTF y si el usuario lo selecciona, se van a ver todos los archivos con extensión RTF (*.RTF). La segunda opción va a decir Archivos de texto y al seleccionarlo se van a ver todos los archivos que tienen la extensión TXT. Al tener las extensiones y filtros listos, uso el método ShowDialog() para que el usuario diga el archivo que quiere abrir. Para completar la parte de inicialización de frmAbrir, Cuando el usuario selecciona el archivo en frmAbrir, a strArchivo le asigno el nombre del archivo seleccionado por el usuario (frmAbrir.FileName).
Verifico que el usuario seleccione un archivo, revisando la longitud del nombre del archivo seleccionado. En caso que todo va bien (el usuario seleccionó un archivo), a strExtension le asigno la extensión del archivo seleccionado (tomo las 4 últimas letras de strArchivo y los convierto a mayúsculas). Si el archivo tiene extensión TXT, a una variable le digo que es un archivo de texto (lo voy a usar más adelante, no te apures) y si es un RTF le establezco otro valor.
Lo último que hago es cargar el archivo a la caja de texto "rico" (rtfTexto). Esto se hace usando la función LoadFile. Solo necesita saber el nombre del archivo y el tipo del archivo. Con esos datos, ya puede abrir el archivo y ponerlo en rtfTexto. Este es el código para abrir el archivo RTF terminado:
Guardar un archivo es casi idéntico. La única diferencia es que en lugar de usar la función LoadFile para abrir el archivo, uso la función SaveFile para guardarlo en la ubicación seleccionada por el usuario. Este es el código:
Ahora va lo complicado: finalizar el programa (jeje). Aquí está el código. Como está tan complicado, ni lo explico:
Con esto terminamos esta aplicación. ¡Hasta la próxima!
Para ejemplificar su uso, voy a crear una aplicación Windows que abra un archivo RTF y lo guarde. Voy a aprovechar la aplicación para mostrar el funcionamiento de dos controles útiles que tiene el VB 2005: el OpenFileDialog y el SaveFileDialog. Estos son dos ventanas que permiten abrir y guardar archivos respectivamente.
En primer lugar, voy a dibujar una interfaz que contenga un RichTextBox (que yo llamé rtfTexto), 4 botones (btnBorrar, btnAbrir, btnGuardar y btnSalir), un OpenFileDialog (frmAbrir) y un SaveFileDialog (frmGuardar). Todo esto en una ventana llamada frmRTF. Así se ve en la vista diseño:
Para divertirnos un poco, voy a manipular el evento Resize del formulario para que cambie de tamaño mi caja de texto y los botones se acomoden cada vez que el usuario cambia de tamaño la ventana. Esto lo hago en la vista de código seleccionando (frmRTF eventos) como se ve en esta figura:
Y del otro lado, elijo el evento Resize, como se ve así:
El código para este evento sería este:
Creo que está bastante claro. Solo cambio las propiedades Width y Height del RichTextBox (rtfTexto) de acuerdo al tamaño de la ventana (Me). También cambié la propiedad Top de los botones para que se alinearan de acuerdo a la altura de la ventana.
Una función muy simple es el del primer botón (que yo llamé btnBorrar) que se encarga de dejar en blanco la caja de texto "rico". Solo usa un método (función) del texto rico que lo b orra todo, el Clear. Así queda el código:
El código que abre un archivo (del botón btnAbrir) declara 3 variables para contener el nombre del archivo (strArchivo), la extensión del archivo (strExtension) y la manera en que se va a guardar el archivo al disco (intTipoArch). Después le digo la extensión de archivo por defaúlt (en mi caso quiero que abra archivos con extensión RTF). Esto se establece con la propiedad DefaultExt del objeto OpenFileDialog (que en mi caso se llama frmAbrir). Luego establezco la lista de los tipos de archivos que aparecerá en la ventana. Para esto, le digo a la propiedad Filter que ponga dos opciones en la ventana: la primera va a decir Archivos RTF y si el usuario lo selecciona, se van a ver todos los archivos con extensión RTF (*.RTF). La segunda opción va a decir Archivos de texto y al seleccionarlo se van a ver todos los archivos que tienen la extensión TXT. Al tener las extensiones y filtros listos, uso el método ShowDialog() para que el usuario diga el archivo que quiere abrir. Para completar la parte de inicialización de frmAbrir, Cuando el usuario selecciona el archivo en frmAbrir, a strArchivo le asigno el nombre del archivo seleccionado por el usuario (frmAbrir.FileName).
Verifico que el usuario seleccione un archivo, revisando la longitud del nombre del archivo seleccionado. En caso que todo va bien (el usuario seleccionó un archivo), a strExtension le asigno la extensión del archivo seleccionado (tomo las 4 últimas letras de strArchivo y los convierto a mayúsculas). Si el archivo tiene extensión TXT, a una variable le digo que es un archivo de texto (lo voy a usar más adelante, no te apures) y si es un RTF le establezco otro valor.
Lo último que hago es cargar el archivo a la caja de texto "rico" (rtfTexto). Esto se hace usando la función LoadFile. Solo necesita saber el nombre del archivo y el tipo del archivo. Con esos datos, ya puede abrir el archivo y ponerlo en rtfTexto. Este es el código para abrir el archivo RTF terminado:
Guardar un archivo es casi idéntico. La única diferencia es que en lugar de usar la función LoadFile para abrir el archivo, uso la función SaveFile para guardarlo en la ubicación seleccionada por el usuario. Este es el código:
Ahora va lo complicado: finalizar el programa (jeje). Aquí está el código. Como está tan complicado, ni lo explico:
Con esto terminamos esta aplicación. ¡Hasta la próxima!
2 comentarios:
hola tony esta muy interesante pero si quisiera abrir un archivo de word extension .doc o el .docx como lo hago o me parece que no se puede
Más bien, desde Word tienes que guardarlo en formato RTF. De otro modo, creo que no se puede.
Publicar un comentario