EEssccuueellaa ddee C Coom meerrcciioo M MA AR RTTÍÍN N ZZA APPA ATTA A TTaallleerr ddee O Oppeerraacciioonneess IInnffoorrm mááttiiccaass -- 22000088 VISUAL BASIC – Archivos en Visual Basic – Proyectos Archivos Este proyecto aborda el tratamiento de archivos planos en Visual Basic. Se trata de tres proyectos en los cuales se muestra el manejo de este tipo de archivos. También se ve el tratamiento de las estructuras de datos en base a la definición de tipos definidos por el usuario y la utilización de los controles CommonDialog. Archivos 1 Este formulario tiene un procesador de texto muy simple (un TextBox con la propiedad multiline a true y con ambas barras de desplazamiento), cinco botones de comando que permiten manejar archivos de texto. Según si la casilla de verificación Escritura está tildada o no el archivo se abrirá para escritura o para lectura. El archivo por omisión (incluido en el código) se llama Prueba1.txt No se ha agregado tratamiento de errores en este proyecto, de modo tal que si el archivo se abre para escritura se deberá escribir en el área de texto y luego pulsar el botón Write y luego el botón Close. Si por el contrario se desea leer el archivo habrá que abrirlo para lectura y pulsar el botón Input. Seguidamente se lista el código fuente de este formulario: Option Explicit Dim strArchi As String Dim intPuerto As Integer Private Sub cmdArchi_Click(Index As Integer) Select Case (Index) Case 0: If Check1.Value = vbChecked Then Open App.Path & "\Prueba1.txt" For Append As #intPuerto Else Open App.Path & "\Prueba1.txt" For Input As #intPuerto End If lblEstado = "Estado Archivo: " & cmdArchi(Index).Tag Case 1: Close #intPuerto lblEstado = "Estado Archivo: " & cmdArchi(Index).Tag Case 2: txtArea.Text = Input(LOF(intPuerto), #intPuerto) lblEstado = "Estado Archivo: " & cmdArchi(Index).Tag Case 3: Write #intPuerto, txtArea.Text lblEstado = "Estado Archivo: " & cmdArchi(Index).Tag Case Else: txtArea.Text = "" End Select End Sub Private Sub Form_Load() intPuerto = FreeFile End Sub Se ha resaltado en cyan el código específico de tratamiento de archivos. Profesora Laura Noussan Lettry página 1 de 6 EEssccuueellaa ddee C Coom meerrcciioo M MA AR RTTÍÍN N ZZA APPA ATTA A TTaallleerr ddee O Oppeerraacciioonneess IInnffoorrm mááttiiccaass -- 22000088 Archivos 2 Este formulario cuenta también con un editor de texto y es similar al anterior salvo por el hecho de que utiliza un tipo de datos definido por el usuario; es decir una estructura de datos que permite obtener datos de la tabla Cargos y exportar los mismos a un archivo de texto. A continuación se lista el código fuente y se da una pequeña explicación del mismo. Option Explicit Dim intPuerto As Integer Dim strArchi As String Dim i As Integer Estructura de datos. Tipo nuevo, definido por el usuario. Se basa en la estructura de la tabla Cargos. Luego se define una variable de este tipo llamada DatosCargos Private Type DatosCargos IdCargo As Integer NbreCargo As String * 12 'utiliza un campo fijo de 12 caracteres MinSal As Double MaxSal As Double End Type Se abre para Dim uddtCargos As DatosCargos escritura (desde el inicio del archivo, si Private Sub cmdArchi_Click(Index As Integer) no existe lo crea) Select Case (Index) Case 0: Open strArchi For Output As #intPuerto Case 1: Se lee cada registro del With datCargos.Recordset Recordset datCargos (del Do While Not .EOF control Data) y se escribe en el uddtCargos.IdCargo = .Fields("idcargo") archivo con la sentencia Write uddtCargos.NbreCargo = .Fields("nbrecargo") uddtCargos.MinSal = .Fields("minsal") uddtCargos.MaxSal = .Fields("maxsal") Write #intPuerto, uddtCargos.IdCargo, uddtCargos.NbreCargo, _ uddtCargos.MinSal, uddtCargos.MaxSal .MoveNext Loop Se abre lectura End With Case 2: Close #intPuerto Se lee el archivo y Case 3: se muestra en el Open strArchi For Input As #intPuerto área de texto. Case 4: txtArea.Text = Input(LOF(intPuerto), #intPuerto) End Select End Sub Private Sub Form_Load() intPuerto = FreeFile strArchi = App.Path & "\cargos.txt" End Sub Profesora Laura Noussan Lettry Al cargar el formulario se averigua el puerto del sistema disponible (FreeFile) página 2 de 6 EEssccuueellaa ddee C Coom meerrcciioo M MA AR RTTÍÍN N ZZA APPA ATTA A TTaallleerr ddee O Oppeerraacciioonneess IInnffoorrm mááttiiccaass -- 22000088 Archivos 3 Este formulario lleva a cabo el manejo de archivos con una interfaz más amigable para el usuario. Utiliza tres controles CommonDialog: uno para seleccionar las opciones de color de fondo del editor de texto; otro para establecer la fuente del texto y otro para poder manejar los diálogos Abrir Archivo y Guardar Como. [Para este tema vea las páginas 58 a 61 de Aprenda Visual Basic 6.0 como... ] A continuación se muestra el código fuente . Option Explicit Dim intPuerto As Integer Dim strArchi As String Private Sub cmdArchi_Click(Index As Integer) Select Case (Index) Case 0: intPuerto = FreeFile cdlgArchi.DefaultExt = "*.txt" cdlgArchi.ShowOpen Open cdlgArchi.FileName For Input As #intPuerto strArchi = cdlgArchi.FileName txtArea.Text = Input(LOF(intPuerto), #intPuerto) Case 1: Close #intPuerto Open strArchi For Output As #intPuerto Write #intPuerto, txtArea.Text Close #intPuerto Case 2: Close #intPuerto intPuerto = FreeFile cdlgArchi.ShowSave Open cdlgArchi.FileName For Output As #intPuerto Write #intPuerto, txtArea.Text Close #intPuerto Case 3: Close #intPuerto Case 4: txtArea.Text = "" End Select End Sub ABRIR ARCHIVO • Se averigua el puerto disponible • Se especifica que el cuadro de diálogo sólo muestre archivos de texto • Se muestra el cuadro de diálogo • Se abre el archivo • Se captura el nombre del archivo seleccionado por el usuario • Se muestra el contenido del GUARDAR • Se cierra el archivo • Se abre para escritura • Se escribe en él lo que el usuario escribió en el área de texto. • Se cierra el archivo GUARDAR COMO ... • Se cierra el archivo • Se averigua el puerto disponible • Se muestra el cuadro de diálogo • Se abre un nuevo archivo para escritura • Se escribe en este archivo • Se cierra el archivo Private Sub mnuFormato_Click(Index As Integer) Select Case (Index) Case 0: cdlgFuente.Flags = cdlCFEffects Or cdlCFBoth cdlgFuente.ShowFont txtArea.FontName = cdlgFuente.FontName txtArea.FontBold = cdlgFuente.FontBold txtArea.FontItalic = cdlgFuente.FontItalic txtArea.FontSize = cdlgFuente.FontSize Profesora Laura Noussan Lettry página 3 de 6 EEssccuueellaa ddee C Coom meerrcciioo M MA AR RTTÍÍN N ZZA APPA ATTA A TTaallleerr ddee O Oppeerraacciioonneess IInnffoorrm mááttiiccaass -- 22000088 txtArea.FontStrikethru = cdlgFuente.FontStrikethru txtArea.FontUnderline = cdlgFuente.FontUnderline txtArea.ForeColor = cdlgFuente.Color Case 1: cdlgColor.Flags = cdlCCFullOpen cdlgColor.ShowColor txtArea.BackColor = cdlgColor.Color End Select End Sub Un ejemplo Ejecución del formulario: Se escribe en el editor Se selecciona el título de menú Fuente y se establecen estas propiedades Así queda el editor Profesora Laura Noussan Lettry página 4 de 6 EEssccuueellaa ddee C Coom meerrcciioo M MA AR RTTÍÍN N ZZA APPA ATTA A TTaallleerr ddee O Oppeerraacciioonneess IInnffoorrm mááttiiccaass -- 22000088 Se guarda el trabajo utilizando la opción Guardar Como... que ocasiona que aparezca el cuadro de diálogo Guardar Como... Abrimos el documento: al pulsar el botón Abrir Archivo aparece el cuadro de diálogo Abrir: Profesora Laura Noussan Lettry página 5 de 6 EEssccuueellaa ddee C Coom meerrcciioo M MA AR RTTÍÍN N ZZA APPA ATTA A TTaallleerr ddee O Oppeerraacciioonneess IInnffoorrm mááttiiccaass -- 22000088 El contenido del archivo se muestra en el editor. Se nota que se utilizó la función Input puesto que el texto aparece encerrado entre comillas dobles: Vamos a modificar el color de fondo del editor para lo cual seleccionamos el título de menú Color: El cuadro de diálogo ha sido establecido de modo que el usuario pueda seleccionar también las opciones de los colores personalizados. Así es como se ve el Editor de Texto: Profesora Laura Noussan Lettry página 6 de 6